-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'。 –