问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

键盘输入函数(scanf、getchar)在gcc的循环中为什么只能输入一次?

发布网友 发布时间:2022-04-24 02:00

我来回答

1个回答

热心网友 时间:2023-10-20 13:36

我没有 mac, gcc.
理论上 这段 c 语言 符合 标准 c. 应当没问题。
注意你输入前,是否多按了Enter键或空白。
你可以在 n=getchar() 后面 加一句:
printf("n=%c %#x\n",n,n); // 打印出 你刚拍入的 字符 和它的 16进制值。
检查 你的输入 是否正确。
如果是 y, 应当 得: n=y 0x79
否则是输入问题。追问我是亲自在mac linux上运行过的,还了两种输入方法,scanf getchar,后来也加了打印。循环也换过for循环,但是运行以后只收输入一次就跳出循环了。如果你有linux的话可以试一下。也可以试一下VS,我觉得应该没问题。

追答你若用 scanf() 时,注意格式,在 %c 前要有一个空格:
scanf(" %c",&n);
这样保证忽略空白和回车换行,只读入有形字符。
后面也加上: printf("n=%c %#x\n",n,n);
如果打印出的是 n=y 0x79 则一定能继续循环。
--------
mac 与 windows 主要不同是 mac 用 CR, windows 用 CRLF, c 语言用 LF 作行结束标志.

热心网友 时间:2023-10-20 13:36

我没有 mac, gcc.
理论上 这段 c 语言 符合 标准 c. 应当没问题。
注意你输入前,是否多按了Enter键或空白。
你可以在 n=getchar() 后面 加一句:
printf("n=%c %#x\n",n,n); // 打印出 你刚拍入的 字符 和它的 16进制值。
检查 你的输入 是否正确。
如果是 y, 应当 得: n=y 0x79
否则是输入问题。追问我是亲自在mac linux上运行过的,还了两种输入方法,scanf getchar,后来也加了打印。循环也换过for循环,但是运行以后只收输入一次就跳出循环了。如果你有linux的话可以试一下。也可以试一下VS,我觉得应该没问题。

追答你若用 scanf() 时,注意格式,在 %c 前要有一个空格:
scanf(" %c",&n);
这样保证忽略空白和回车换行,只读入有形字符。
后面也加上: printf("n=%c %#x\n",n,n);
如果打印出的是 n=y 0x79 则一定能继续循环。
--------
mac 与 windows 主要不同是 mac 用 CR, windows 用 CRLF, c 语言用 LF 作行结束标志.

热心网友 时间:2023-10-20 13:36

我没有 mac, gcc.
理论上 这段 c 语言 符合 标准 c. 应当没问题。
注意你输入前,是否多按了Enter键或空白。
你可以在 n=getchar() 后面 加一句:
printf("n=%c %#x\n",n,n); // 打印出 你刚拍入的 字符 和它的 16进制值。
检查 你的输入 是否正确。
如果是 y, 应当 得: n=y 0x79
否则是输入问题。追问我是亲自在mac linux上运行过的,还了两种输入方法,scanf getchar,后来也加了打印。循环也换过for循环,但是运行以后只收输入一次就跳出循环了。如果你有linux的话可以试一下。也可以试一下VS,我觉得应该没问题。

追答你若用 scanf() 时,注意格式,在 %c 前要有一个空格:
scanf(" %c",&n);
这样保证忽略空白和回车换行,只读入有形字符。
后面也加上: printf("n=%c %#x\n",n,n);
如果打印出的是 n=y 0x79 则一定能继续循环。
--------
mac 与 windows 主要不同是 mac 用 CR, windows 用 CRLF, c 语言用 LF 作行结束标志.

热心网友 时间:2023-10-20 13:36

我没有 mac, gcc.
理论上 这段 c 语言 符合 标准 c. 应当没问题。
注意你输入前,是否多按了Enter键或空白。
你可以在 n=getchar() 后面 加一句:
printf("n=%c %#x\n",n,n); // 打印出 你刚拍入的 字符 和它的 16进制值。
检查 你的输入 是否正确。
如果是 y, 应当 得: n=y 0x79
否则是输入问题。追问我是亲自在mac linux上运行过的,还了两种输入方法,scanf getchar,后来也加了打印。循环也换过for循环,但是运行以后只收输入一次就跳出循环了。如果你有linux的话可以试一下。也可以试一下VS,我觉得应该没问题。

追答你若用 scanf() 时,注意格式,在 %c 前要有一个空格:
scanf(" %c",&n);
这样保证忽略空白和回车换行,只读入有形字符。
后面也加上: printf("n=%c %#x\n",n,n);
如果打印出的是 n=y 0x79 则一定能继续循环。
--------
mac 与 windows 主要不同是 mac 用 CR, windows 用 CRLF, c 语言用 LF 作行结束标志.

热心网友 时间:2023-10-20 13:36

我没有 mac, gcc.
理论上 这段 c 语言 符合 标准 c. 应当没问题。
注意你输入前,是否多按了Enter键或空白。
你可以在 n=getchar() 后面 加一句:
printf("n=%c %#x\n",n,n); // 打印出 你刚拍入的 字符 和它的 16进制值。
检查 你的输入 是否正确。
如果是 y, 应当 得: n=y 0x79
否则是输入问题。追问我是亲自在mac linux上运行过的,还了两种输入方法,scanf getchar,后来也加了打印。循环也换过for循环,但是运行以后只收输入一次就跳出循环了。如果你有linux的话可以试一下。也可以试一下VS,我觉得应该没问题。

追答你若用 scanf() 时,注意格式,在 %c 前要有一个空格:
scanf(" %c",&n);
这样保证忽略空白和回车换行,只读入有形字符。
后面也加上: printf("n=%c %#x\n",n,n);
如果打印出的是 n=y 0x79 则一定能继续循环。
--------
mac 与 windows 主要不同是 mac 用 CR, windows 用 CRLF, c 语言用 LF 作行结束标志.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 问下 从键盘获得输入的都有什么函数 标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项对吗 C语言从键盘输入用什么函数 java 键盘输入函数 Java从键盘输入函数的写法 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。问在键盘上如何输入 如何快速利用键盘输入EXCEL2007函数 如何在键盘上输入三角函数 C语言中的键盘输入函数。。。 如何在matlab中通过键盘输入一个函数? 如何鉴赏古钱币? 如何鉴别古钱币形制 ? 如何区分真假古钱筒子 请问古钱如何辨别真伪? 如何鉴别一个古币的真假??? 古钱币自己如何鉴定? 如何鉴别古代钱币的真假? 情头是什么? 平安平安银行信用卡好用吗 找情头! c语言 如何创建一个键盘输入值的子函数给主函数 在C语言中通常使用 什么函数获得用户从键盘上的输入 C语言:我想从键盘上输入一个无限长的字符串,用什么函数啊?谢谢! 轻松C语言用函数输入输出 scanf怎么用? 函数名:kbhit():检查当前是否有键盘输入 ae怎么导出视频mp4格式? 男女合租房子,半夜11点男子敲房门,提出过分要求,这事你怎么看? 我引狼入室了怎么办! 心烦死了!... 引狼入室,我该怎么办? ae到出视频什么格式 引狼入室的原因是什么? 引狼人室对 引狼人室的成语故事 哪一家动物园狼圈养哈士奇? 同样作为猛兽,为何人类驯服了狼,而不曾驯服豹子? 有谁知道狼画得最好的? AE渲染转视频选格式都会崩溃,怎么解决 用狼和室组成的成语4个。。 大石桥市蟠龙山动物园狼室里养哈士奇,狼和哈士奇长的像吗?