fgets做什么?

时间:2012-11-18 22:51:11

标签: c fgets

不相等:

fgets (answer, 256, stdin);

if (strncmp(answer, "sta", 4) == 0)
  printf("omg, it's equal"); 

此代码为:

fgets (answer, 4, stdin);

if (strncmp(answer, "sta", 4) == 0)
  printf("omg, it's equal"); 

为什么呢?这是因为在第一个,答案没有\ 0在第四个地方我猜(如果我把它改为3而不是4它工作)。但是fgets做了什么?第一个字符串答案是str \whitespace*253\0"?在第二个是str\0?谢谢。

1 个答案:

答案 0 :(得分:4)

fgets(与gets不同)包含与该行末尾按下的返回相对应的尾随\n。如果您将3作为限制,则会截断字符串,放弃\n

从联系手册:

  

fgets()从流和中读取最多一个小于大小的字符         将它们存储到s指向的缓冲区中。读后停止了         EOF或换行符。如果读取换行符,则将其存储到缓冲区中。         终止空字节('\0')存储在最后一个字符之后         缓冲区。