【问题标题】:Segmentation fault when reading file in C在C中读取文件时出现分段错误
【发布时间】:2018-11-24 08:39:24
【问题描述】:

我正在尝试从文件中读取。我的程序正确读取了第一行,但在第二行出现分段错误,我不知道为什么会这样。

这是我的代码(抱歉是匈牙利语):

FILE *fp = fopen (fajlnev, "r");
if (fp == NULL) {
    perror("Fájl megnyitása sikertelen");
    return;
}
char tmp [21];
strcpy(tmp,nev);
strcpy(pj->nev,"\0");
char buf1, buf2, buf3;
fscanf(fp, "%c%c%c", &buf1, &buf2, &buf3);
while (strcmp(pj->nev, tmp)!=0 ) {
    fscanf(fp, "%s %d %d\n", pj->nev, &(pj->meret), &(pj->pontszam));       

    for(int i=0; i<pj->meret; i++) {
        for(int k=0; k<pj->meret; k++) {
            fscanf(fp, "%u",  &(pj->foldek[i][k].n));
            fscanf(fp, "%d", &(pj->foldek[i][k].allapot));
            fscanf(fp, "%ld", (long *)&(pj->foldek[i][k].ido));
            printf("hiba");

        }
    }
 fscanf(fp, "\n");
}

pj-&gt;foldek[i][j].n是枚举类型,allapot是整数,idotime_t

如果您能帮助我,我将不胜感激! :)

【问题讨论】:

  • 嗨 Petra,您显然没有使用任何调试器,但有一些简单的事情可以做。尝试替换两个 strcpy 调用 strcpy(tmp,nev); strcpy(pj->nev,"\0");使用 memcpy 或 strncpy 调用,看看是否可以通过这种方式修复它。

标签: file segmentation-fault scanf


【解决方案1】:

请更改 while 循环: 而 (!feof(fp) && strcmp(pj->nev, tmp)!=0 )

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2014-05-02
    • 2020-08-14
    相关资源
    最近更新 更多