2016-09-06 91 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); 
} 
相關問題