这是C中的一个小程序。
我想在while循环中获取用户输入,并且我也希望在行中占用空格,因此我使用scanf("%[^\n]s",name);
但它提供了不同的输出。它停留在while循环中。
#include <stdio.h>
int main (int argc, char const *argv[])
{
do
{
char name[20];
scanf("%[^\n]s",name);
printf("%s\n", name);
}while (1);
return 0;
}
输出:
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
adAD A SAF A SA FA
我想使用while循环从内部带有空格的用户输入。
答案 0 :(得分:1)
您可以尝试这种方式:
#include<stdio.h>
int main (int argc, char const *argv[])
{
char name[20];
while(gets(name))
{
printf("%s\n", name);
}
return 0;
}
如果您想打破输入循环,那么您有两个选项AFAIK: 1.如果您在Windows中按CTRL + Z. 2.如果您在Linux中按CTRL + D.
答案 1 :(得分:0)
您应该查找scanf
函数的返回值并决定break
循环。
答案 2 :(得分:0)
这是可以解决您的问题的代码,尽管您应该考虑包括一些检查条件以从do while循环中断。希望它有效
#include<stdio.h>
int main ()
{
char name[20];
do
{
gets(name);
puts(name);
}while (1);
return 0;
}
答案 3 :(得分:0)
扫描后请使用fflush(stdin)
注意:stfl上的fflush是高度特定于平台的,但通常适用于遇到此问题的平台
答案 4 :(得分:-1)
您可以使用gets()替换scanf(),例如: #include
int main (int argc, char const *argv[])
{
do
{
char name[20];
//scanf("%[^\n]s",name);
gets(name);
printf("%s\n", name);
}while (1);
return 0;
}
但是“获取”功能很危险,不应该使用。