2015-07-18 98 views
3
scanf("%s", input); 

    if (strlen(input) > 1) { 
     errorNet(); 
    } 

    if (input[0] == '\n') { 
     errorNet(); 
    } 

    if (input[0] == '\0') { 
     errorNet(); 
    } 

當我按回車時,scanf進入下一行並繼續搜索輸入。我如何設置,如果輸入命中,函數errorNet被調用?如何捕捉輸入鍵(' n')?

Ex。如果輸入/空行被輸入,則調用errorNet函數。

+2

使用'fgets'代替。 – BLUEPIXY

+3

不要使用'scanf(「%s」,輸入)'......這可能會溢出任何輸入緩衝區。使用'fgets()'從'stdin'中讀取一行 –

回答

1

如果您使用fgets,請指定您正在閱讀的字符串的大小。當達到此尺寸或用戶按\n時,fgets將停止讀取輸入。請注意,此大小在字符串末尾計數爲\0

char input[10]; 
fgets(input, 10, stdin); 
printf("%s\n", input); 

要檢測一個用戶只需按下\n不寫任何東西,只是檢查的第一個字符是一個\n,例如:

if (input[0] == '\n') { 
    printf("just '\\n'\n"); 
}