c - 解析一个巨大的文本文件给我一个段错误

标签 c segmentation-fault

我正在尝试用 C 语言解析一个相对较大的文本文件。我无法使用 mallocrealloc。如您所见,单词应基于 "/" 进行标记。但是,即使 i 更改了数组的大小,下面的代码也会出现段错误。

char buf[1000];
char *token;
char tags[500][1000];
FILE *fp = fopen("file.txt", "r");

for (i = 0; fgets(buf, sizeof(buf), fp);) {

            token = strtok(buf, " /");
            while (token != NULL) {
                strcpy(tags[i], token);
                i++;
                token = strtok(NULL, " /");
            }
        }

最佳答案

for (i = 0; i < 500 && fgets(buf, sizeof(buf), fp);) { }

否则我们可能会遇到数组越界错误并发生崩溃。 毕竟这是C。

关于c - 解析一个巨大的文本文件给我一个段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377701/

相关文章:

c - 在 strtok 中如何使用 char* 作为参数

c - 强制转换 void 指针地址的含义

c - sprintf/snprintf 是否分配额外的内存?

c++ - 满足条件时是否可以在 GLSL 着色器中回调 C/C++ 函数/代码?

c - 警告 : parameter names (without types) in function declaration [enabled by default]

elf - 手动创建的 ELF 可执行文件因 SIGSEGV 而崩溃

c - Makefile相关

c - 将二维数组传递给 C 中的 GTK 函数

c++ - 获取文件数据后刷新 cout 的问题

c++ - 为什么 C++ 数组创建会导致段错误?