首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

fgets 的第一个参数只能是数组吗,能不能是指针!解决方法

2012-02-10 
fgets 的第一个参数只能是数组吗,能不能是指针!!如题!能否给个例子![解决办法]char *fgets( char *string,

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语言中传入的数组将会蜕化前退去一维的指针形式

热点排行