簡體   English   中英

使用不帶 stdio 的 C 從 stdin 清除剩余輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM