fgets 的第一个参数只能是数组吗,能不能是指针!!
如题!
能否给个例子!
[解决办法]
char *fgets( char *string, int n, FILE *stream );
函数原型如上。
char 类型指针。
当然给个数组名也是可以的。因为数组名是数组的首地址,可以看做指针
[解决办法]
指针当然可以,不过指针要指向一块可用的内存区.
例子1:
char rgchar[100];
char *psz = rgchar;
fgets(psz,....);
例子2:
char *psz;
psz = (char *)malloc(100 * sizeof(char));
....
fgets(psz,....);
这是因为fgets会对指针指向的内存进行填充(写操作),所以指针必须指向可用的、合理的内存区。
实际上传递数组,也只不过是把数组首地址(一个指针常量)传递给fgets而已,并且数组肯定有合理空间的分配了。
[解决办法]
当然可以。
数组传递给 fgets 后,
在函数内部其实就退化成了一个普通的指针了。
所以,
只要分配了足够的空间,
传递指针也没有任何问题:
char *ptr=(char *)malloc(100 * sizeof(char));
fgets(ptr, 80, fp); //从fp指定的文件中读取 80 个字符到 ptr指向的空间中
puts(ptr); //输出查看内容
[解决办法]
本质是个指针,指向一块可用的缓存即可,数组名可以看作一个常量指针
[解决办法]
可以是指针呀
在c语言中传入的数组将会蜕化前退去一维的指针形式