繁体   English   中英

C:从文件读取时出现分段错误

[英]C: Segmentation Fault when reading from a file

我最近开始从事这个项目,但在将某些内容读入全局变量时遇到了麻烦。 这是使用pthread进行练习的原因,这就是为什么我首先使用全局变量的原因。 该程序应该从表示已解决的数独难题的文件中读取数字,并且文本文件将使用9个数字字符和9次换行格式设置。 我确保在运行该程序时,文件的格式是这样的。 我知道我的代码的这一段包含分段错误,但我不知道在哪里。 我只能假定它与fgets()有关。 但是,我查找的所有资源中都没有任何东西会让我觉得我使用的不正确。 当我诉诸使用fgetc时,它甚至会执行此操作,一次读取一次,使fgetc会返回一个int,这与fgets将字符串分配给变量(在本例中为s)不同。

除非确定无法找到它,否则我不会将它带到堆栈溢出中。 我一直在梳理代码一个小时,试图找到此段错误,对我来说这没有任何意义。 我知道Seg Fault就在这里,因为它紧随其后,应该打印出整个拼图矩阵,但是并没有那么远。

int main(int argc, char *argv[]) {

    FILE* puzzlefile;
    char s[10];
    int i=0, j=0, skip;
    //open the file passed in via command line
    puzzlefile = fopen(argv[1], "r");

    for (i=0; i<9; i++){
        //get first string of 10 characters
        fgets(s,10, puzzlefile);
        for (j=0; j<9; i++){
            //read the numbers from s into the puzzle 2D
            //array, which takes ints. Ignore the 10th
            //character, which will be \n
            puzzle[j][i] = (int)(s[j]-'0');
        }
    }
    ...
}

您的问题似乎是这样的:

  for (j=0; j<9; i++)
                 ^^^ 

这应该是j++ ,而不是i++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM