user-0 提问: C函数输出输入问题，奇怪了

回复:
user: user-0
content: 引用 4 楼 jun木~的回复:[quote=引用 3 楼 狼横天下的回复:][quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] scanf运行完后加个getchar();把多余的字符给读了不就好了。[/quote] 这个方法可以，请问是何原因？

user: user-0
content: 引用 9 楼 自信男孩的回复:#include  <stdio.h>  #define MAX 3  struct worker {     char name[20];     char sex[8];     int  age;     float salary; };  int main() {     struct worker w[MAX];     int i;     for(i=0;i<MAX;i++)     {         printf("Input name :");         scanf("%s",w[i].name);         printf("Input sex :");         scanf("%s", w[i].sex);         printf("Input age :");         scanf("%d",&w[i].age);         printf("Input salary :");         scanf("%f",&w[i].salary);     }     printf("name    sex    age   salary\n");     for(i=0;i<MAX;i++)         printf("%-10s%-6s%-6d%-10.2f\n",w[i].name, w[i].sex,w[i].age,w[i].salary);     return 0; } 供参考～  试试改成这样，你还是按照你之前的输入。 测试可以的，谢谢，但是不太明白原因，望指点下

user: user-1
content: #include  <stdio.h>  #define MAX 3  struct worker {     char name[20];     char sex[8];     int  age;     float salary; };  int main() {     struct worker w[MAX];     int i;     for(i=0;i<MAX;i++)     {         printf("Input name :");         scanf("%s",w[i].name);         printf("Input sex :");         scanf("%s", w[i].sex);         printf("Input age :");         scanf("%d",&w[i].age);         printf("Input salary :");         scanf("%f",&w[i].salary);     }     printf("name    sex    age   salary\n");     for(i=0;i<MAX;i++)         printf("%-10s%-6s%-6d%-10.2f\n",w[i].name, w[i].sex,w[i].age,w[i].salary);     return 0; } 供参考～  试试改成这样，你还是按照你之前的输入。

user: user-2
content: 引用 7 楼 狼横天下的回复:[quote=引用 4 楼 jun木~ 的回复:] [quote=引用 3 楼 狼横天下的回复:][quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] scanf运行完后加个getchar();把多余的字符给读了不就好了。[/quote]  这个我试了，还不行呢[/quote] 改gets吧！然后上下加getchar

user: user-0
content: 引用 4 楼 jun木~ 的回复:[quote=引用 3 楼 狼横天下的回复:][quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] scanf运行完后加个getchar();把多余的字符给读了不就好了。[/quote]  这个我试了，还不行呢

user: user-0
content: 引用 5 楼 與蘤舊縐 的回复:[quote=引用 3 楼 狼横天下的回复:][quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] gets只认回车，可以试试[/quote]       这个办法我昨晚试过，可以的，谢谢

user: user-3
content: 引用 3 楼 狼横天下的回复:[quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] gets只认回车，可以试试

user: user-2
content: 引用 3 楼 狼横天下的回复:[quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] scanf运行完后加个getchar();把多余的字符给读了不就好了。

user: user-0
content: 引用 4 楼 jun木~的回复:[quote=引用 3 楼 狼横天下的回复:][quote=引用 2 楼 與蘤舊縐 的回复:] scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容[/quote] scanf运行完后加个getchar();把多余的字符给读了不就好了。[/quote] 试过了，加了几个也都还是不行呢

user: user-0
content: 引用 2 楼 與蘤舊縐 的回复:scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了 似乎是这效果，但我要怎么改，才能达到一问一答的效果呢？ 我输入第一个名字的时候，无论是空格还是回车，都无法跳出第二个PRINTF的内容

user: user-3
content: scanf("%s")以空格判断输入结束，你打了两个空格把下面的全填了

user: user-4
content: scanf输入字符串遇到空格就会结束的