1

この形式で人々に関する入力を受け取る簡単なプログラムを作成しようとしています:

 name,age,gender,info

これまでのコードは次のとおりです。

 #include <stdio.h>

 int main() {
    char name[10];
    int age;
    char gender[2];
    char info[50];

    while(scanf("%9s,%i,%1s,%49[^\n]", name, &age, gender, info) == 4)
    puts("Success");

    return 0;
 }

端末で次のように入力bob,10,M,likes cheeseしますが、成功メッセージが出力されないため、while ループの条件が失敗したと推測されます。

したがって、次のコードを追加して、引数の数を確認します。

int i = scanf("%9s,%i,%1s,%49[^\n]", name, &age, gender, info);
printf("%i", i);

bob,10,M,likes Cheese と再び入力すると、1 が出力されます。

誰でも助けてもらえますか?

4

1 に答える 1

4

%9sは、空白が見つかるまで、指定された長さ (9) または文字列の末尾に到達するまで入力を消費します。この場合、bob,10,M,単にbob.

テスト

%9[^,],%i,%1s,%49[^\n]代わりに試してください。

テスト

また、性別は 1 文字なので、aにして代わりにchar使用することもできます(省略可能でない限り)。%c%1s

テスト

于 2013-06-09T13:24:03.740 に答える