我的档案看起来像:

123456789


我的代码给我分段错误:

#include <stdio.h>

int main(){

    FILE *f;
    char ch[5];
    f = open("a.txt", "r");
    fgets( ch, 4, f);
    ch[4] = NULL;
    printf("%s", ch); //Fixed
    return 0;
}


我是绝对的初学者。我究竟做错了什么。我的目标是使用fgets读取文件的前4个字符。

最佳答案

你想做

    printf("%s", ch);


对于%格式,参数是指向字符的指针;通过按值传递单个字符,您就是要告诉printf将该字符的ASCII值解释为指针,这会让您大吃一惊;即,如果字符是1(即ASCII 49),则它将在内存中的字节49处查找字符串-并且向下看通常为verboten。

但是,第二,我看到您正在呼叫open()而不是fopen()。您必须使用fopen(),否则将无法获得期望的FILE*

两者都可能会导致段错误-您需要同时修复它们。

关于c - 读取文件时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9124198/

10-11 23:20
查看更多