c - sscanf 显示随机字符

标签 c scanf

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

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

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

最佳答案

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

关于c - sscanf 显示随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300944/

相关文章:

c - 如何围绕质心旋转/缩放/平移

c - 使用 malloc 和 realloc 动态地将字符串添加到 char 指针

c - 是否有可能从抽象/基本结构继承或在 C 中沿着这些线路模拟某些东西?

c - 调用 printf() 是如何在此处添加数字的?

C语言编程 printf、scanf

c - Seek_END向后搜索

c - 为什么我不能输入值?

c++ - 指针数组和指向指针数组的指针

c - 为什么我的程序在调试时崩溃了?

c - Scanf 似乎工作不正常,或者我做错了什么