小编Ber*_*son的帖子

第一行代码之前的分段错误

我正在开发一个简单的C程序来打开文件并从中读取一些数据.没有编译错误,但是当我在某个文件上运行程序时,出现"Segmentation Fault:code dumped"错误.我在代码的最顶部插入了一个print语句,但它没有运行.当你还没有做任何事情时,是否有可能出现分段错误?

#include <stdio.h>


int main(int argc, char **argv)
{
    printf("%s", "Made it to here!");
FILE *fp;   
char input[100];
fp = fopen(argv[1], "r+b");
fgets(input, sizeof(input), fp);
printf("%s", input);
fclose(fp);
return(0);

}
Run Code Online (Sandbox Code Playgroud)

当我在它自己的文本版本上运行它时它会工作,它打印出第一行.但是,当我在另一个文件texttest.vmf上运行它时,我得到分段错误,第一个打印不执行.VMF是Valve Map Files,但它们是标准文本格式.这个文件大约3.7 KB.有任何想法吗?

c io segmentation-fault

7
推荐指数
1
解决办法
7513
查看次数

第二次调用printf时出现分段错误

我正在编写一个打开文件的简单C程序,并将每行读入一个数组,其中LISTS是我希望读取的文件中的最大行数.

但是,当MASTER_LIST小于LISTS行时,我第二次得到printf()的分段错误,但不是第一次(我已评论显示在哪里).

我对这种行为感到有点困惑,我想知道是什么导致它以及我可以做些什么来规避它.理想情况下,当fgets找到文件的结尾时,我会停止阅读.

#define MASTER_LIST "master_list.txt"
#define LINE 64
#define LISTS 32

char **lists = malloc(LISTS * sizeof(char *));
int i; 
for (i = 0; i < LISTS; i++) {
    lists[i] = malloc(LINE * sizeof(char));
}

/*Open the file for reading.*/
FILE *fp = fopen(MASTER_LIST, "r");
if (fp != NULL) {
    /*Each line of the file, up to LISTS is read into lists.*/
    for (i = 0; i < LISTS; i++){

        lists[i] = fgets(lists[i], LINE, fp);
        /*NO SEGFAULT HERE*/ printf("Line …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault

7
推荐指数
1
解决办法
316
查看次数

标签 统计

c ×2

segmentation-fault ×2

io ×1