我需要输入一个非常长的字符串,我不需要保留任何内存(以后不需要再读取字符串,只需要逐字符)。我如何处理字符串而不接收完整的字符串? 这是我的代码片段:如何在不使用返回键的情况下按字符输入字符串?
for(length = n; length > 0; length--) {
input = getchar();
if (input == ...
...
显然,这并不工作,但它使我的意图明显。我怎样才能达到我想要的?
我需要输入一个非常长的字符串,我不需要保留任何内存(以后不需要再读取字符串,只需要逐字符)。我如何处理字符串而不接收完整的字符串? 这是我的代码片段:如何在不使用返回键的情况下按字符输入字符串?
for(length = n; length > 0; length--) {
input = getchar();
if (input == ...
...
显然,这并不工作,但它使我的意图明显。我怎样才能达到我想要的?
如果我得到它的正确,那么你可能尝试这样的:
while (1)
{
char c = (char)getchar();
if(c=='\n')
break;
// do your logic here
}
这是一个无限循环,如果输入不以换行符或读取错误结束...... – mafso
@mafso: - 是的,我意识到这一点,但这是我想到的,因为他想输入字符一个接一个没有休息! –
此示例代码存在getchar返回int的问题,因此可以正确输入某些返回值,例如DOS/Windows(两个字符一起)和EOF中的'\ n'。强制输入到8位字符会失去识别'\ n'和EOF的能力。 – user3629249
以下逻辑将帮助您
for(length = n; length > 0; length--)
{
input = getchar();
if (input is required values)
{
process it
}
else if (input is end of input indicator)
{
break;
}
else //unwanted characters
{
continue; //skip it
}
}
对我来说,你的意图不明确。 “没有返回键”是什么意思? 'n'从哪里来? – mafso
+1好问题。还需要澄清一下,应该如何认识'字符串结尾'? –
这只是代码的一部分。 n是前面输入的字符串的长度。输入是一个很长的字符串,但我不想在处理它之前将整个字符串存储在内存中。喵,没有字符数组或malloc。 在字符串的末尾有'\ n'。 – kBisla