feof函数,fscanf函数,strtok函数等遇到的小疑惑解决办法

      近几天我等几个小菜鸟要做一个快译通软件,简单实现根据英语查汉语,本人负责将dict.txt词库中的单词调入内存哈希表。现把自己在敲代码中遇到的几个问题及解决办法记录下来。
    1.feof()函数用于判断是否读写到文件尾,会多执行一次的解决办法。
     EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的十进制为26,因此可以用EOF作为文件结束标志。
    当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。
    feof()函数判断文件是否结束,结束或者出错返回非零值,否则返回零。
    C语言的“feof()”函数和数据库中“eof()”函数的运作是完全不同的。数据库中“eof()”函数读取当前指针的位置,C语言的“feof()”函数返回的是最后一次“读操作的内容”。举个简单的例子,比如有人说“你走到火车的最后一节车厢”这就是位置。而如果说“一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。
    解决办法:
while(1)  .... if(feof(fp)) break;
    2.fscanf()函数从文件中读取文本,遇到空格结束的解决办法。
    char str[100];
    fscanf(fp,"%[^\n]%*c",str);
    正则表达式的运用,[]读取数据但只允许读取括号内的字符,[^]读取数据但不允许括号内的字符出现,上两行代码就是读到换行符才结束,%*c任意个字符。
    3.函数调用导致对同一文件fclose()两次的错误。
    我在主函数及调用函数中都添加了fclose(fp),运行提示对同一地址重复释放内存的错误。
    4.while(1)的使用与#if 0 #endif的使用。
    while(1)
    {
        跳出死循环的语句,如
        if(i>25)
            break;
    }
    #if 0
    #endif
    实现注释掉一块代码;
    5.全局变量的运用。
    静态全局变量只在所定义的源文件中起作用,非静态全局变量在整个源程序中起作用。
    6.以"wb"方式打开fopen()文件,fwrite()文件是不是二进制,可不可以查看的问题。
    如果你写入的是字符串,虽然你是以二进制方式写入的,但文本编辑器还是会去一个字节一个字节地解释文件,所以结果还是文本。但如果是int型数据,你用cat查看就是乱码,因为int型数据占四个字节。所以并不是所有的二进制文件都不能用cat命令查看。
    7.strtok函数的使用。
    一个以前的源代码:
#include <stdio.h>
#include <string.h>int main(void)
{FILE *fp;char buf[256];char *p;char *token;char *a[7];fp=fopen("/etc/passwd","r");if(fp==NULL){perror("open:");return 1;}while((p=fgets(buf,256,fp))!=NULL){int i=0;token=strtok(p,":");printf("%s:",token);while((token=strtok(NULL,":"))!=NULL){a[i++]=token;}printf("%s\n",a[4]);}fclose(fp);return 0;
}

8.如果你想从标准输入中写一个带空格的字符串到字符数组中

   例如:
   char str[50];
   printf("please input:\n");
   getchar();
   fgets(str,50,stdin) ;
   我想说的getchar()的用法!
  详细源代码等项目完成再上传。

feof函数,fscanf函数,strtok函数等遇到的小疑惑解决办法相关推荐

  1. oracle11g ora 29927,listagg函数 ORA-01489 result of string concatenation is too long的解决办法 【博森瑞】...

    listagg函数 ORA-01489: result of string concatenation is too long的解决办法 概述 listagg 函数是Oracle 11g推出的一个分组 ...

  2. VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法

    VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法 1. 载入图像报错 使用loadimage()加载图片时,程序报错界面如下图 报错内容如下: 解决方案1: 在图片名称前加个 ...

  3. php strtok函数用法,php strtok函数怎么用

    PHP strtok函数用于逐一分割字符串,其语法是strtok(string,split),参数string必需,指规定要分割的字符串:split必需,指规定一个或多个分割字符. php strto ...

  4. win10远程桌面连接报错(出现身份验证错误。要求的函数不受支持。CredSSP 加密数据库修正)解决办法

    某天使用win10系统进行远程桌面连接时,出现了连接失败的情况,提示: 出现身份验证错误. 要求的函数不受支持 这可能是由于 CredSSP 加密数据库修正. 多次重试,问题依旧,而以往是可以正常进行 ...

  5. Matlab贝叶斯工具箱函数冲突、函数或变量无法识别、箭头无法显示的解决办法

    警告: 函数 assert 与某个 MATLAB 内置函数同名.建议您重命名该函数以避免潜在的名称冲突. 位置:path (第 109 行) 位置: addpath (第 86 行) 要不就是各种函数 ...

  6. nextline函数_Java 中nextLine()方法没有执行直接跳过解决办法

    使用Java的Scanner类nextLne()方法从显示器输入数据时,nextInt()后面的nextLine()直接跳过没有执行: 截图:第三个输入直接跳过 通过上网的查找我终于发现了问题出在哪里 ...

  7. C#代码调用js函数,js函数中的document.getElementById(对象ID)得null值解决办法

    不知道大家有没有遇到这种情况,反正我就遇到过,我现在把解决方法写在下面. 解决方法:1,把调用js函数些在</from>下面.(我原来是写在head标签里面) 2,在cs页面定义一个全局变 ...

  8. 把类的成员函数声明为友元函数,但不能访问私有成员的原因和解决办法

    定义类X,类Y,在类X中声明类Y的成员函数g()为类X的友元函数 常见的几种错误写法及原因: 错误写法1 class Y; class X {public:X(int i) :i(i) {}frien ...

  9. oracle ora32771,listagg函数 ORA-01489: result of string concatenation is too long的解决办法

    概述 listagg函数是Oracle 11g推出的一个分组函数,可以将字符串按分组连接起来. SQL> select deptno ,listagg(ename,'->') within ...

最新文章

  1. 【Vue】新建一个Vue3项目
  2. 网络分布式软件bonic清除
  3. Wordpress 加入html等文件
  4. 在Java程序设计中,设置环境变量path和classpath的作用分别是什么?
  5. nginx rewrite和根据url参数location
  6. 悟空CRM横空出世 为中小型企业献智慧
  7. B题 锅炉水冷壁温度曲线 2021年第一届长三角高校数学建模竞赛
  8. 解决VERSION 1.7 OF THE JVM IS NOT SUITABLE FOR THIS PRODUCT.
  9. C# MVC的博客开发(二)登录
  10. 人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓
  11. AJAX ControlToolkit学习日志-Tabs(27)
  12. SpringBoot项目整合Retrofit最佳实践,这才是最优雅的HTTP客户端工具!
  13. appium+python的APP自动化(1)
  14. 我和Linux,不得不说的故事
  15. 网页数据抓取工具 (谷歌插件 web Scraper)
  16. tplink迷你路由器中继模式_TP-Link无线路由器中继模式设置教程
  17. 一文读懂李洪元被捕251天:先后涉及三项罪名 录音成关键证据
  18. 小包实用工具:国家代码大全
  19. html中collapse代码怎么写,如何使用CSS中的border-collapse属性
  20. 用Matplotlib实现世界GDP动态排名

热门文章

  1. 瑞云为您开启《精灵王座》的魔幻之旅,看跨界CP的燃情虐恋
  2. twitter api的使用
  3. 二是方便其“飞鸽下载”人看
  4. sql删除或清空表数据
  5. 详谈10G XFP万兆光模块有哪些类型?
  6. 用 Rails 搭建微信公众平台 API
  7. iOS 使用CoreAudio生成白噪音频数据
  8. 萤石云出现非h264情况解决办法
  9. CATIA转的STP打开什么都没有_CATIA教程之常见去参方法
  10. 网页瞬间转换成桌面应用级程序(IOS/Win/Linux)