Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:从文件读取时出现分段错误_C_Linux_Segmentation Fault - Fatal编程技术网

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

C:从文件读取时出现分段错误,c,linux,segmentation-fault,C,Linux,Segmentation Fault,我最近开始做这个项目,我很难将某些东西读入全局变量。这是为了练习pthreads,这就是我首先使用全局变量的原因。该程序应该从一个表示已解决数独难题的文件中读取数字,文本文件将被格式化为9个数字字符,后跟新行,9次。我已经确定,在运行这个程序时,文件的格式是这样的。我知道我代码的这一段包含了分段错误,但我不知道在哪里。我只能假设它与fgets()有关。然而,我所查找的资源中没有任何一个资源会让我认为我没有正确地使用它。当我使用fgetc时,它甚至可以做到这一点,一次读取一位,为fgetc返回一个

我最近开始做这个项目,我很难将某些东西读入全局变量。这是为了练习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');
        }
    }
    ...
}
intmain(intargc,char*argv[]){
文件*拼图文件;
chars[10];
int i=0,j=0,跳过;
//打开通过命令行传入的文件
拼图文件=fopen(argv[1],“r”);

对于(i=0;i),您的问题似乎是:

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

for(j=0;j您的问题似乎是:

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

for(j=0;jp请确切地告诉我们
puzzle
声明为什么。“这是为了练习pthreads,这就是为什么我首先使用全局变量。”XY问题:你想做X,但不知道怎么做。你认为你可以用Y来解决它,但也不知道怎么做。你问Y,这是一件奇怪的事情。只要问X。它被声明为“int puzzle[9][9]”。请确切地告诉我们
puzzle
被声明为什么。“这是为了练习pthreads,这就是我为什么首先使用全局变量的原因。”XY问题:你想做X,但不知道如何做。你认为你可以用Y解决它,但也不知道如何做。你问Y,这是一件奇怪的事情。只问X。它被声明为“int puzzle[9][9]"这看起来确实像是一个不受欢迎的无限循环。嗯,这解决了问题…有点。我似乎有一些调试要做,但这在很大程度上解决了它。这确实看起来像是一个不受欢迎的无限循环。嗯,这解决了问题…有点。我似乎有一些调试要做,但这解决了大部分问题rt。