C语言 使用 sscanf 时的分段错误



在文件中,每行都以单词或制表符开头,例如:

此测试

------tab//使用破折号,因为多个空格使其成为代码格式

不是选项卡

在我的循环中,我试图使用 sscanf 获取每个单词。这是我的代码:

while(fgets(str, sizeof(str), file) != NULL) {
     if(str[0] == 't') {
        char *test;
        sscanf(str, "%s", test);
     }
     // This following code gives the segmentation fault
     else {
          char *temp;
          sscanf(str, "%s", temp);
     }
}

我尝试在 else 中输出 str,它是一个有效的 str。

您的"temp"和"test"指针未初始化,因此任何尝试sscanf((进入它们都会崩溃。

用静态数组替换它们(例如 char temp[100]; ( 或将它们指向分配的内存(例如 char *temp = malloc(100); ,之后您需要free()(,但请注意,由于缓冲区溢出的可能性,像这样使用 (s(scanf 是危险的。

相关内容

  • 没有找到相关文章

最新更新