在请求带空格的字符串时循环 scanf
Loop a scanf while asking for a string with spaces
#include <stdio.h>
int main()
{
char name[100];
int i;
for (i=0; i<3;i++){
printf("\nEnter the name : ");
scanf("%[^\n]",name);
}
printf ("\nName of Student : %s ",name);
}
我希望此代码请求名称 3 次,但它只请求一次,不胜感激。
当您使用时:
scanf("%[^\n]",name);
换行符留在输入流中。当函数被第二次和第三次调用时,scanf
将零个字符读入接收参数。
添加一行以读取并丢弃该行之后的换行符。
getc();
#include <stdio.h>
int main()
{
char name[100];
int i;
for (i=0; i<3;i++){
printf("\nEnter the name : ");
scanf ("%[^\n]%*c", name);
}
printf ("\nName of Student : %s ",name);
}
[]是扫描集字符。 [^\n] 表示当输入不是换行符 ('\n') 时进行输入。然后使用 %*c 从输入缓冲区读取换行符。
您还可以使用:
scanf(" %[^\n]s",name);
#include <stdio.h>
int main()
{
char name[100];
int i;
for (i=0; i<3;i++){
printf("\nEnter the name : ");
scanf("%[^\n]",name);
}
printf ("\nName of Student : %s ",name);
}
我希望此代码请求名称 3 次,但它只请求一次,不胜感激。
当您使用时:
scanf("%[^\n]",name);
换行符留在输入流中。当函数被第二次和第三次调用时,scanf
将零个字符读入接收参数。
添加一行以读取并丢弃该行之后的换行符。
getc();
#include <stdio.h>
int main()
{
char name[100];
int i;
for (i=0; i<3;i++){
printf("\nEnter the name : ");
scanf ("%[^\n]%*c", name);
}
printf ("\nName of Student : %s ",name);
}
[]是扫描集字符。 [^\n] 表示当输入不是换行符 ('\n') 时进行输入。然后使用 %*c 从输入缓冲区读取换行符。
您还可以使用:
scanf(" %[^\n]s",name);