2016-09-06 3 views
-2

ユーザーに名前を入力するように指示するときは、空白だけでなく名前を入力する必要があります。ユーザーがCの空白文字をすべて入力していないかどうかを確認する方法

出力例: 名前:
あなたの名前がある:/ ユーザーがどのように1だけで、スペース文字が実際に実施されたことを確認し、ないでしょう

/

のみ空白に入りましたか?私の入力を取り戻すためにfgets()を使用していますが、私は仕事中ですので、コードを投稿することができません。コードがネセサリーなら、私は今夜遅く(太平洋標準時)作業中のものを投稿します。ありがとうございました!

+0

宿題ALERT - 私はあなたを教えてみましょう:if文、ループと1が関与する(素朴な方法)、あなたが取得した入力に 'scanf'(または' sscanf'を使用している場合はstrchr –

+1

を使用する場合があります'fgets')、すべての空白である入力を受け付けません。 'scanf'の場合、' sscanf'の場合、入力を待つでしょう。戻り値は '1'ではありません。 –

答えて

0

テストする方法の1つは、スペースであればすべての文字をチェックすることです。

#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); 
}