2015-07-18 71 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"); 
}