2014-07-06 30 views
1

我需要输入一个非常长的字符串,我不需要保留任何内存(以后不需要再读取字符串,只需要逐字符)。我如何处理字符串而不接收完整的字符串? 这是我的代码片段:如何在不使用返回键的情况下按字符输入字符串?

for(length = n; length > 0; length--) { 
    input = getchar(); 
    if (input == ... 
     ... 

显然,这并不工作,但它使我的意图明显。我怎样才能达到我想要的?

+0

对我来说,你的意图不明确。 “没有返回键”是什么意思? 'n'从哪里来? – mafso

+0

+1好问题。还需要澄清一下,应该如何认识'字符串结尾'? –

+0

这只是代码的一部分。 n是前面输入的字符串的长度。输入是一个很长的字符串,但我不想在处理它之前将整个字符串存储在内存中。喵,没有字符数组或malloc。 在字符串的末尾有'\ n'。 – kBisla

回答

1

如果我得到它的正确,那么你可能尝试这样的:

while (1) 
{ 
     char c = (char)getchar(); 
     if(c=='\n') 
     break; 
     // do your logic here 
} 
+0

这是一个无限循环,如果输入不以换行符或读取错误结束...... – mafso

+3

@mafso: - 是的,我意识到这一点,但这是我想到的,因为他想输入字符一个接一个没有休息! –

+0

此示例代码存在getchar返回int的问题,因此可以正确输入某些返回值,例如DOS/Windows(两个字符一起)和EOF中的'\ n'。强制输入到8位字符会失去识别'\ n'和EOF的能力。 – user3629249

0

以下逻辑将帮助您

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 
    } 
} 
相关问题