C函数输出输入问题,奇怪了

[复制链接]
查看11 | 回复10 | 2021-1-27 06:51:59 | 显示全部楼层 |阅读模式
代码如下,按理是提示输出一句,输入一个;再提示输出一句,再输入一个。。。。可当我这样输入第一句名字的时候:(lanlanlan)结果却变成这样了,不按套路来的呀?

窗口显示:
Inputname:lanlanlan
Inputsex:Inputage:Inputsalary:Inputname:Inputsex:Inputage:Inputsalary:Inputname:Inputsex:Inputage:f
Inputsalary:namesexagesalary
lan790.00
lan10.00
lan
790.00
--------------------------------
Processexitedafter12.03secondswithreturnvalue0
请按任意键继续...

#include
#defineMAX3
structworker
{
charname[20];
charsex;
intage;
floatsalary;
};
intmain()
{
structworkerw[MAX];
inti;
for(i=0;i -->
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
scanf输入字符串遇到空格就会结束的
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用2楼與蘤舊縐的回复:scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了
似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用3楼狼横天下的回复:Quote: 引用2楼與蘤舊縐的回复:
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了

似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容

scanf运行完后加个getchar();把多余的字符给读了不就好了。
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用3楼狼横天下的回复:Quote: 引用2楼與蘤舊縐的回复:
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了

似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容

gets只认回车,可以试试
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用5楼與蘤舊縐的回复:Quote: 引用3楼狼横天下的回复:Quote: 引用2楼與蘤舊縐的回复:
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了

似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容

gets只认回车,可以试试
这个办法我昨晚试过,可以的,谢谢
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用4楼jun木~的回复:Quote: 引用3楼狼横天下的回复:Quote: 引用2楼與蘤舊縐的回复:
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了

似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容

scanf运行完后加个getchar();把多余的字符给读了不就好了。
这个我试了,还不行呢
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
引用7楼狼横天下的回复:Quote: 引用4楼jun木~的回复:
Quote: 引用3楼狼横天下的回复:Quote: 引用2楼與蘤舊縐的回复:
scanf("%s")以空格判断输入结束,你打了两个空格把下面的全填了

似乎是这效果,但我要怎么改,才能达到一问一答的效果呢?我输入第一个名字的时候,无论是空格还是回车,都无法跳出第二个PRINTF的内容

scanf运行完后加个getchar();把多余的字符给读了不就好了。
这个我试了,还不行呢

改gets吧!然后上下加getchar
回复

使用道具 举报

千问 | 2021-1-27 06:51:59 | 显示全部楼层
#include
#defineMAX3
structworker
{
charname[20];
charsex[8];
intage;
floatsalary;
};
intmain()
{
structworkerw[MAX];
inti;
for(i=0;i
供参考~
试试改成这样,你还是按照你之前的输入。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行