fgets()无法从txt文件里读出数据 您所在的位置:网站首页 c语言文件读取不出来怎么回事 fgets()无法从txt文件里读出数据

fgets()无法从txt文件里读出数据

2024-07-10 03:17| 来源: 网络整理| 查看: 265

一、问题

源程序的目的是把cpp.txt文件里的内容一行一行的读出,并打印输出,但是一行也没有被读出来。 源程序如下:

#include #include #include char *s; int main(){ FILE *f; if((f=fopen("cpp.txt","r"))==NULL) printf("文件打开失败!"); exit(0); } while(fgets(s,50,f)!=NULL)//fgets返回NULL时 ,读到文件末尾 { printf("%s",s); } fclose(f); return 0; } 二、问题解决

首先,排除光标不在txt文件末尾的问题,因为无论光标在哪,fopen函数会自动把文件读指针放在文件开头。 其次,函数没有用错,函数的参数也没有用错。 错在对字符串的定义方式上,就是这一句

char *s;

虽然char s[51]和 char *s这两种字符串的定义方式在本质上都是一样的(编译器都当做字符数组处理,因为C语言没有字符串这种变量),但是区别在于一个规定了字符串长度,一个没规定长度。 而fgets函数中要求第二个参数给出一次读取的字符个数:

fgets(s,50,f)

所以只能使用char s[51]这一种定义方式。并且定义时要注意,字符串长度要比fgets(s,50,f)里的第二个参数多一位,用来存放‘/0’。

正确程序:

#include #include #include char s[51]; int main(){ FILE *f; if((f=fopen("cpp.txt","r"))==NULL) printf("文件打开失败!"); exit(0); } while(fgets(s,50,f)!=NULL)//fgets返回NULL时 ,读到文件末尾 { printf("%s",s); } fclose(f); return 0; }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有