-2
当提示用户输入名称时,用户确实需要输入名称而不仅仅是空格。如何检查用户是否未输入C中的全部空白字符
输出例如: 名称:
你的名字是:/ 用户输入只有空白/
如何将一个验证字符被实际执行,而不仅仅是空间?即时通讯使用fgets()来检索我的输入,但我无法现在发布代码,因为我在工作中,并从我的移动设备上执行此操作。如果代码是nessesary,我会发布即将在今晚晚些时候(太平洋标准时间)工作的内容。谢谢!
当提示用户输入名称时,用户确实需要输入名称而不仅仅是空格。如何检查用户是否未输入C中的全部空白字符
输出例如: 名称:
你的名字是:/ 用户输入只有空白/
如何将一个验证字符被实际执行,而不仅仅是空间?即时通讯使用fgets()来检索我的输入,但我无法现在发布代码,因为我在工作中,并从我的移动设备上执行此操作。如果代码是nessesary,我会发布即将在今晚晚些时候(太平洋标准时间)工作的内容。谢谢!
测试的一种方法是检查所有字符是否空格。
#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);
}
HOMEWORK ALERT - 让我告诉你:它涉及一个循环和1 if语句(简单的方式),可能想如果你使用'scanf'(或'sscanf'上获得的输入,和strchr使用 –
'fgets')它不会接受全部空白的输入。在'scanf'的情况下,它将等待输入,对于'sscanf'它的返回值不会是它应该是的'1'。 –