1

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

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

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

4

1 回答 1

1

发生这种情况是因为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第一个字符串在到达&标志时停止读取。

于 2013-08-18T15:58:10.027 回答