fgets和fscanf之间的区别?

前端之家收集整理的这篇文章主要介绍了fgets和fscanf之间的区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对C中的fgets和fscanf有疑问.这两者之间到底有什么区别?例如:
char str[10];
while(fgets(str,10,ptr))
{
counter++;
...

和第二个例子:

char str[10];
while(fscanf(ptr,"%s",str))
{
counter++;
...

当有一个包含由空格分隔的字符串的文本文件时,例如:AB1234 AC5423 AS1433.在第一个示例中,while循环中的“counter”将不会提供与第二个示例中相同的输出.当更改fgets函数中的“10”时,计数器将始终给出不同的结果.这是什么原因?
还有人可以解释一下fscanf究竟做了什么,每个while循环中的字符串有多长?

解决方法

函数fgets读取直到换行符(并且还存储它).带有%s说明符的fscanf读取直到任何空格并且不存储它…

作为旁注,您没有在scanf中指定缓冲区的大小,并且它不安全.尝试:

fscanf(ptr,"%9s",str)

猜你在找的C&C++相关文章