输出自动作为C中的输入

时间:2015-04-21 17:27:51

标签: c

这是一个简单的代码。我正在进行输入,打印,再次打印并再次打印。

第二次它不允许我提供输入。

有人可以解释原因吗?

#include "stdio.h"
int main()
{
char buff[50];

printf("Enter a String\n");
scanf("%[^\n]s",buff);

puts(buff);

printf("Enter another String\n");
scanf("%[^\n]s",buff);

puts(buff);

return 0;
}

输出:

Enter a String
Hello                  // This I have entered
Hello                  // This is the output
Enter another String
Hello                  // This I haven't entered, It automatically takes this.

2 个答案:

答案 0 :(得分:3)

在第二个scanf()中,在输入说明符的开头放置一个空格:

scanf(" %[^\n]s",buff);
      ^^^

这将当前第二次满足scanf的字符,并允许您输入第二个字符串。

答案 1 :(得分:3)

使用其他格式有帮助

// scanf("%[^\n]s",buff);
scanf(" %49[^\n]",buff);
//              ^ no s
//        ^ width limit
//     ^ consume previous line's leftover \n  (and all white-space)

请注意,当用户仅输入scanf(" %[^\n]",buff);时,buff不会更改" \n"

但最好使用fgets()

fgets(buff, sizeof buff, stdin);
buf[strcspn(buffer, "\n")] = 0;  // to remove \n