1

次のコードがあります。ヘッダーは省略します。

char teacher[1024];
    char subject[1024];
    sscanf(data,"teacher=%s&subject=%s",teacher,subject);
    puts(teacher);
    puts(subject);

コードが のようなランダムな未知の文字を出力するのはなぜXè|·Ïº¿ですか? 何が問題なのですか?と一緒%sですか?ありがとう!

4

1 に答える 1

1

これは、 がand/orsscanfに入れるデータを見つけられず、初期化されていないために発生します。それらを初期化し、次のように両方を確実に設定するコードを追加する必要があります。teachersubjectsscanf

char teacher[1024] = "";
char subject[1024] = "";
if (sscanf(data,"teacher=%s&subject=%s",teacher,subject) == 2) {
    puts(teacher);
    puts(subject);
} else {
    printf("Error reading teacher and subject.\n");
}

修正するには、最初の を次のように変更し%sます%[^&]

sscanf(data,"teacher=%[^&]&subject=%s",teacher,subject);

これにより、記号sscanfに到達したときに最初の文字列の読み取りが停止します。&

于 2013-08-18T15:58:10.027 に答える