[英]Read an input from the terminal
我正在做一個項目,我必須從終端讀取數據。
所以程序正常啟動,用戶必須給出一些指令。 我希望程序等待用戶給出的指令(在終端中錄音),然后執行所有指令。
我只能使用read
函數來獲取輸入。 直到現在,我找到了下面的方法
int main (void)
{
char line[50];
int ret;
printf ("\nEnter string below\n");
while ((ret = read(0, line, 50)) != -1)
{
line[ret] = '\0';
printf ("result %s\n", line);
}
}
它有效,但我想輸入所有說明,然后在按 ENTER 時退出輸入模式並處理它們。
是否可以 ? 另外,是否有使用 CRTL + D 退出輸入模式的常用方法
謝謝
我認為你應該做
while (read(0, line, 50) > 0)
printf("%s\n", line);
但是,如果這樣做,例如第一個輸入為 42 個字符而第二個輸入為 30,則會遇到麻煩,因為讀取函數不會重置“行”緩沖區。 如果可以,請使用 memset 或制作自己的函數來做到這一點!
為什么 > 0 而不是 != -1 :因為 read 返回 -1 如果它是錯誤和 0 如果它是輸入的結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.