gets()和scanf()之间有什么区别

时间:2015-02-27 20:55:01

标签: c string scanf gets letters

#include <stdio.h>

int main()
{
   char text[100];
   int length = 0;

   gets(text);

   while (text[length] != '\0')
      length++;

   printf("%d",length);
}

我试图使用上面的程序计算字符串中的字母数。有效。但是,当我使用scanf()代替gets()尝试相同的程序时,它无法正常工作。

1 个答案:

答案 0 :(得分:1)

gets(buf)scanf("%[^\n]", buf)是等效的,不得使用,因为他们会在buf的末尾读取输入。

使用fgets(buf, sizeof buf, stdin)并调整代码,以便fgets'\n'存储在buf的末尾(如果在输入流中存在)。