Sscanf显示随机字符

时间:2013-08-18 15:54:02

标签: c scanf

我有以下代码。我省略了标题。

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

为什么代码输出随机的,未知的字符,如Xè|·Ïº¿?可能是什么问题呢?它是%s吗?谢谢!

1 个答案:

答案 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在第一个字符串到达​​&时停止读取。