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