C: 从文件读取时出现分段故障



我最近开始从事这个项目,在将某些内容读入全局变量时遇到了问题。这是为了练习pthreads,这就是我首先使用全局变量的原因。该程序应该从一个代表已解决的数独谜题的文件中读取数字,文本文件将由9个数字字符和一行换行符格式化,共9次。我已经确保,当运行这个程序时,文件的格式是这样的。我知道我的代码的这一段包含分段错误,但我不知道在哪里。我只能推测它与fgets()有关。然而,我查找的资源中没有任何内容会让我认为我使用错误。当我使用fgetc时,它甚至会这样做,一次读取一位,为fgetc返回int提供便利,而不是fgets将字符串分配给变量(在本例中为s)。

除非我确定找不到它,否则我不会把它带到堆栈溢出;我已经在代码中搜索了一个小时,试图找到这个seg错误,但这对我来说没有任何意义。我知道seg错误在这里,因为它应该直接打印出整个谜题矩阵,但它并没有走那么远。

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++

相关内容

  • 没有找到相关文章

最新更新