大家好,我正在使用一个简单的代码:
#include <stdio.h>
void main()
{char choice;
do
{
printf("\nHello World");
printf("\nDo you wish to continue:\n");
choice = getchar();
}
while(choice=='y');
}
在执行时,我得到以下输出:
Hello World
Do you wish to continue
y
Hello World
Do you wish to continue
--------------------End of Program--------------------
你会注意到, getchar()函数在第二次迭代时不起作用。 更重要的是,该计划并没有等我输入输入&#39;选择&#39;在第二次迭代。
出了什么问题?
答案 0 :(得分:1)
&#34;输入&#34;在第一个输入保留在缓冲区后按下的键,在下次控制到达getchar()
时读取。
为了避免这种情况,您可以在第一个之后使用另一个getchar()
,这将吸收输入的换行符。或者你可以使用这个
if(c != '\n')
c=getchar();
答案 1 :(得分:1)
输入<script>
function readfileautomatically() {
var client = new XMLHttpRequest();
client.open("GET", "/foo.txt");
client.onload = function() {
var tr = document.querySelector("table tr");
var res = this.responseText.split(/\b/);
var text = " from txt file will be here";
for (var i = 0; i < res.length; i++) {
if (i === 0) {
var elem = document.createElement("td");
elem.id = "line" + 1;
elem.innerHTML = res[i] + text;
tr.appendChild(elem);
} else if (i === 2) {
var elem = document.createElement("td");
elem.innerHTML = res[i].toLowerCase() + text;
elem.id = "line" + i;
tr.insertBefore(elem, tr.lastChild)
}
}
}
client.send();
}
</script>
<body onload="readfileautomatically();">
<table>
<tbody>
<tr>
<td id="foo">foo</td>
</tr>
</tbody>
</table>
</body>
后,您按y
键作为第二个输入。因此,程序终止,因为第二个选项不是enter
,而是y
..你可以用这个
\n
第二个getchar()自动将do
{
printf("\nHello World");
printf("\nDo you wish to continue:\n");
choice = getchar();
getchar();
}
作为输入并跳过它
答案 2 :(得分:0)
在y之后按'enter'然后,对于下一个getchar(),输入将被视为输入。您可以刷新或使用两个getchar,只考虑第一个输入 例如:c = getchar(); d =的getchar();
在
中检查c in