在c访问冲突中将文本文件中的整数读入矩阵

在c访问冲突中将文本文件中的整数读入矩阵,c,file,matrix,integer,C,File,Matrix,Integer,试图从一个文本文件中读取10行10个数字,用空格分隔。我想直接将每个数字保存到矩阵numList中的一个空格中。 我真的不确定我的代码有什么问题,我想可能是因为我没有正确初始化矩阵或其他什么。谢谢你的帮助 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE* fpointer = fopen("numbers.txt",

试图从一个文本文件中读取10行10个数字,用空格分隔。我想直接将每个数字保存到矩阵numList中的一个空格中。 我真的不确定我的代码有什么问题,我想可能是因为我没有正确初始化矩阵或其他什么。谢谢你的帮助

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    FILE* fpointer = fopen("numbers.txt", "r");
    if (fpointer == NULL) {
        printf("No file found");
        return 1;
    }

    // INITIALISE MATRIX
    char* numList[10][10];
    char  buffer[300];

    // COPY NUMBERS INTO MATRIX
    int i = 0;
    while (fgets(buffer, 300, fpointer)) {
        int j = 0;
        char* p = strtok(buffer, " ");
        while ((p != NULL)&&(j<10)) {
            printf(" %s ",p);

            strcpy(numList[i][j],p);

            p = strtok(NULL, " ");
            j++;
        }
        printf("\n");
        i++;
    }


    printf("\n\n");
    //Print Final Matrix
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            printf("%s ", numList[i][j]);
        }
        printf("\n");
    }

    fclose(fpointer);
    return 0;
}
#包括
#包括
#包括
内部主(空){
文件*fpointer=fopen(“numbers.txt”、“r”);
如果(fpointer==NULL){
printf(“未找到文件”);
返回1;
}
//初始化矩阵
char*numList[10][10];
字符缓冲区[300];
//将数字复制到矩阵中
int i=0;
而(fgets(缓冲器、300、F指针)){
int j=0;
char*p=strtok(缓冲区“”);

而((p!=NULL)&(j没有为
numList[i][j]分配内存
您可以使用
strdup
而不是
strcpy

while (fgets(buffer, 300, fpointer)) {
    int j = 0;
    char* p = strtok(buffer, " ");
    while ((p != NULL)&&(j<10)) {
        printf(" %s ",p);

        numList[i][j] = strdup(p);

        p = strtok(NULL, " ");
        j++;
    }
    printf("\n");
    i++;
}
while(fgets(缓冲区,300,fpointer)){
int j=0;
char*p=strtok(缓冲区“”);

当((p!=NULL)和&(j
numList[i][j]
未分配时,请在语句
numList[i][j]=malloc(strlen(p)+1)中添加函数标题;