王之叹息 发表于 2021-5-28 19:16:15

fgets函数


括号里的最后一个参数应该怎么填

肖-肖 发表于 2021-5-28 19:31:49

比如:stdin
因为他说:该参数是一个FILE对象的指针,指定一个代操作的数据流
而stdin是:输入流s即输入缓冲区中读取字符
例如:

    char str;
    printf("请输入一个字符串:");
    fgets(str, 7, stdin);/*从输入流stdin即输入缓冲区中读取7个字符到字符数组str中*/

万千只cnm 发表于 2021-5-28 19:36:05

gets不会检查读取长度 可能会越界
fgets从最后一个参数位置读取size个 到第一个参数(指针,地址中

王之叹息 发表于 2021-5-28 19:37:21

肖-肖 发表于 2021-5-28 19:31
比如:stdin
因为他说:该参数是一个FILE对象的指针,指定一个代操作的数据流
而stdin是:输入流s即输入缓冲 ...

还有别的吗

王之叹息 发表于 2021-5-28 19:44:14

万千只cnm 发表于 2021-5-28 19:36
gets不会检查读取长度 可能会越界
fgets从最后一个参数位置读取size个 到第一个参数(指针,地址中

咋填,咋填

肖-肖 发表于 2021-5-28 19:55:54

王之叹息 发表于 2021-5-28 19:37
还有别的吗

应该就这个,stdout虽然也是数据流但是是输出流
这个要读取,所以用stdin

万千只cnm 发表于 2021-5-28 20:18:50

王之叹息 发表于 2021-5-28 19:44
咋填,咋填

没看小甲鱼c语言吗   
file是type命的别名   

首先理解流的意思,可以想象水从水管里出来,这就是一股水流。
然后,c语言中流动的不再是水,而是有顺序的,有排列结构的数据。比如100001111100001(二进制)
C里的文件流,C里标准文件方式把文件当作流来看,也就是有一个内部缓冲buffer(在C库内部建立,一般为512B),每次以标准方式打开文件时,读入时先将数据读到这个缓冲区里,写的时候也是先写入缓冲区里。
C里标准输入就是stdin,标准输出就是stdout,C对键盘输入(比如scanf)和屏幕输出(比如printf)的行缓冲机制就是建立在这些文件的流机制上的。
再具体我就知道到了{:5_104:}

第一个参数指向的地址就是用来存放 从流读取的数据的
页: [1]
查看完整版本: fgets函数