我有以下代码。我省略了标题。
char teacher[1024];
char subject[1024];
sscanf(data,"teacher=%s&subject=%s",teacher,subject);
puts(teacher);
puts(subject);
为什么代码会输出随机的未知字符,例如Xè|·Ïº¿
?可能是什么问题呢?是与%s
吗?谢谢!
发生这种情况是因为sscanf
没有找到任何数据放入teacher
and/or 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
for %[^&]
,如下所示:
sscanf(data,"teacher=%[^&]&subject=%s",teacher,subject);
这将使sscanf
第一个字符串在到达&
标志时停止读取。