2016-09-06 42 views
-2

当提示用户输入名称时,用户确实需要输入名称而不仅仅是空格。如何检查用户是否未输入C中的全部空白字符

输出例如: 名称:
你的名字是:/ 用户输入只有空白/

如何将一个验证字符被实际执行,而不仅仅是空间?即时通讯使用fgets()来检索我的输入,但我无法现在发布代码,因为我在工作中,并从我的移动设备上执行此操作。如果代码是nessesary,我会发布即将在今晚晚些时候(太平洋标准时间)工作的内容。谢谢!

+0

HOMEWORK ALERT - 让我告诉你:它涉及一个循环和1 if语句(简单的方式),可能想如果你使用'scanf'(或'sscanf'上获得的输入,和strchr使用 –

+1

'fgets')它不会接受全部空白的输入。在'scanf'的情况下,它将等待输入,对于'sscanf'它的返回值不会是它应该是的'1'。 –

回答

0

测试的一种方法是检查所有字符是否空格。

#include <stdio.h> 
#include <stdlib.h> 
// TODO: you should use bool instead 
int is_all_space(const char *s) 
{ 
    char *tmp; 
    tmp = (char *) s; 
    // you might check for '\n' instead in your case 
    // or even '\r' 
    while (*tmp != '\0') { 
    // TODO: this check will fail if the input has zero length 
    if (*tmp != ' ') { 
     return 0; 
    } 
    tmp++; 
    } 
    return 1; 
} 
// don't forget to put the argument in quotes if it contains spaces 
int main(int argc, char **argv) 
{ 
    if (argc < 2) { 
    fprintf(stderr, "Usage: %s somestring\n", argv[0]); 
    exit(EXIT_FAILURE); 
    } 

    if (is_all_space(argv[1])) { 
    puts("Input is all-space and nothing else"); 
    } else { 
    puts("Input it not all-space"); 
    } 
    exit(EXIT_SUCCESS); 
}