读取函数 fgetc和fgets的返回值
【摘要】 大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog掘金LV3用户 https://juejin.cn/us...
大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog
- 掘金LV3用户 https://juejin.cn/user/1381426159953960
- 阿里云社区专家博主,星级博主,技术博主 https://developer.aliyun.com/profile/expert/5lkdbuggiiuhc
- 华为云云享专家 https://bbs.huaweicloud.com/community/myhomepage
如何使用VS查看文本文件的二进制形式
1.在源文件新建项中添加现有项
2.导入
结果:
小端:低字节的内容放到低地址处
如果内存中以大端存储,那就以大端形式写到文本文件
小端也同理,不加任何转化,把数据存进去
12.读取函数返回值
fgetc - 每次读取一个字符
返回值
读取失败时,返回EOF
所以如果使用fgetc读取文件,可以判断fgetc是否为EOF来判定文件是否读取结束
假设现在文件中存放内容为:abcdef
int main()
{
//打开文件
FILE* pf = fopen("test.txt","r");
if(NULL == pf)
{
perror("fopen");
return -1;
}
char ch = 0;
//读文件
//当遇到文件结束时,返回EOF跳出循环
//注意优先级的问题!!!ch读取要用括号括起来
while((ch = fgetc(pf)) != EOF)
{
printf("%c ",ch);
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
执行结果:
fgets -每次读取多个(最多读满一行)
返回值
如果成功读取,返回string的起始地址。如果读取失败,返回NULL
从流中读取n-1个信息然后末尾补上\0,放到string,然后返回string的起始地址
如果遇到错误/或者文件结束,返回NULL
例子
假设文件中存放内容为:
int main()
{
//打开文件
FILE* pf = fopen("test.txt","r");
if(NULL == pf)
{
perror("fopen");
return -1;
}
char arr[20] = {0};//用来保存读取到的内容,空间要足够大(每一次读取都会覆盖上一次的内容)
//读文件
while(fgets(arr,20,pf)!=NULL)
{
printf("%s\n",arr);
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
执行结果
arr的内容每一次读取都会覆盖上一次的内容。
fgets的第二个参数n,如果n大于每一行的字符数,则读满这一行,并不会读取下一行
假设一次读取4个
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "r");
if (NULL == pf)
{
perror("fopen");
return -1;
}
char arr[20] = { 0 };//用来保存读取到的内容,空间要足够大(每一次读取都会覆盖上一次的内容)
//读文件
while (fgets(arr, 4, pf) != NULL)
{
printf("%s\n", arr);
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
执行结果
文件中每一行后面都换行了(\n),所以读取时会把\n也读取进去
一次读取4个字符,实际只读取3个,剩下一个位置放\0
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)