我有以下代码。我省略了标题。
char teacher[1024];
char subject[1024];
sscanf(data,"teacher=%s&subject=%s",teacher,subject);
puts(teacher);
puts(subject);
为什么代码输出随机的,未知的字符,如Xè|·Ïº¿
?可能是什么问题呢?它是%s
吗?谢谢!
答案 0 :(得分:1)
这是因为sscanf
未找到要放入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
在第一个字符串到达&
时停止读取。