一、问题
源程序的目的是把cpp.txt文件里的内容一行一行的读出,并打印输出,但是一行也没有被读出来。
源程序如下:
二、问题解决
首先,排除光标不在txt文件末尾的问题,因为无论光标在哪,fopen函数会自动把文件读指针放在文件开头。
其次,函数没有用错,函数的参数也没有用错。
错在对字符串的定义方式上,就是这一句
char *s;
虽然char s[51]和 char *s这两种字符串的定义方式在本质上都是一样的(编译器都当做字符数组处理,因为C语言没有字符串这种变量),但是区别在于一个规定了字符串长度,一个没规定长度。
而fgets函数中要求第二个参数给出一次读取的字符个数:
fgets(s,50,f)
所以只能使用char s[51]这一种定义方式。并且定义时要注意,字符串长度要比fgets(s,50,f)里的第二个参数多一位,用来存放‘/0’。
正确程序:
原文链接:https://blog.csdn.net/qq_44886213/article/details/109506623
下一篇:没有了