次のコードがあります。ヘッダーは省略します。
char teacher[1024];
char subject[1024];
sscanf(data,"teacher=%s&subject=%s",teacher,subject);
puts(teacher);
puts(subject);
コードが のようなランダムな未知の文字を出力するのはなぜXè|·Ïº¿
ですか? 何が問題なのですか?と一緒%s
ですか?ありがとう!
これは、 がand/orsscanf
に入れるデータを見つけられず、初期化されていないために発生します。それらを初期化し、次のように両方を確実に設定するコードを追加する必要があります。teacher
subject
sscanf
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
に到達したときに最初の文字列の読み取りが停止します。&