[英]Clear remaining input from stdin using C without stdio
我正在嘗試編寫一個 C 程序,它將用戶輸入的長度最多為 X 個字符,然后截斷輸入的 rest。
就目前而言,如果用戶在看到換行之前輸入少於 X 個字符,它將很好地讀取這些字符並正確打印它們。 如果我輸入超過 X 個字符,它將讀取 X 個字符,然后將這些字符吐出到我的命令行中,或者(如果我運行一個循環來檢查是否有更多字符)它將永遠繼續下去。
這是我的代碼
int numChar = 0;
int charRead = 0;
char buffer;
do {
charRead = read(0, &buffer, 1);
if(charRead > 0) {
//save output out of the function
}
numChar++;
} while(charRead > 0);
我在這里嘗試做的是檢查是否讀入了一個字符,如果沒有,則結束輸入階段,但是我意識到來自標准輸入的 read() 將始終等待更多字符可用,我不知道如何解決這個問題。
有什么想法嗎?
干杯,
找到了一個似乎相當 eloquent 的解決方案。 如果有人發現可以修復的東西,請指出,以便我學習。 干杯
代碼如下
bool hasFoundLF = false;
int numChar = 0;
int charRead = 0;
char buffer;
while(!hasFoundLF) {
charRead = read(0, &buffer, 1);
if(buffer == '\n') {
hasFoundLF = true;
return numChar;
}
//Maximum number of characters to be read in
if(numChar < STRMAXLEN-1) {
output[numChar] = buffer;
numChar++;
}
}
if(!hasFoundLF) {
return numChar;
} else {
return -1
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.