C 读取文件时出现问题

C 读取文件时出现问题,c,C,如何在C中读取使用文件*fp保存的矩阵 int main() { int i,j; FILE *fp; int **mat; //matriz de cartas apartir do arquivo int n; //numero de jogadores mat=(char**)malloc(3*sizeof(char*)); for(i=0;i<2;i++){ mat[i]=(char*)malloc(3*sizeof(

如何在C中读取使用文件*fp保存的矩阵

int main()
{
    int i,j;
    FILE *fp;
    int **mat; //matriz de cartas apartir do arquivo
    int n; //numero de jogadores
    mat=(char**)malloc(3*sizeof(char*));
    for(i=0;i<2;i++){
        mat[i]=(char*)malloc(3*sizeof(char));
        if(!mat){
            printf("erro de alocacao\n");
            exit(1);
        }
    }

    fp=fopen("arquivo","r"); //this is the file to read
    if(fp==NULL){
        printf("erro de abertura de ficheiro\n");
        exit(1);

    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            fscanf(fp,"%d",&mat[i][j]);
        }
        printf("%d\n",mat[i][j]); //problem here 
    }
    return 0;
}
考虑

for(i=0;i<3;i++){ 
    for(j=0;j<3;j++){ 
        fscanf(fp,"%d",&mat[i][j]); 
} 
printf("%d\n",mat[i][j]); //problem here  
用于(i=0;i考虑

for(i=0;i<3;i++){ 
    for(j=0;j<3;j++){ 
        fscanf(fp,"%d",&mat[i][j]); 
} 
printf("%d\n",mat[i][j]); //problem here  

for(i=0;i您正在尝试将整数读入分配给字符的空间-您的
malloc()
操作是根据
sizeof(char*)
sizeof(char)
来执行的。这会导致问题

您应该查看与扫描相关的打印位置;目前,您尝试只打印每行数据中的最后一个数字,但您需要考虑打印位置处的
j


您可能还应该检查
scanf()中的返回状态
以确保数据有效。您可能还应该关闭输入文件;尽管程序立即退出,“释放您获取的资源”是一个很好的规则。同样的注释也可以应用于动态分配的数组(释放您分配的资源).

您正在尝试将整数读入分配给字符的空间-您的
malloc()
操作是根据
sizeof(char*)
sizeof(char)
进行的。这会导致问题

您应该查看与扫描相关的打印位置;目前,您尝试只打印每行数据中的最后一个数字,但您需要考虑打印位置处的
j


您可能还应该检查
scanf()中的返回状态
以确保数据有效。您可能还应该关闭输入文件;尽管程序立即退出,“释放您获取的资源”是一个很好的规则。同样的注释也可以应用于动态分配的数组(释放您分配的资源).

你可能想提到你遇到的问题吗?你可能想提到你遇到的问题吗?即使我猜这就是问题。问题没有定义好。即使我猜这就是问题。问题没有定义好。
for(i=0;i<3;i++){ 
    for(j=0;j<3;j++){ 
        fscanf(fp,"%d",&mat[i][j]); 
        printf("%d ",mat[i][j]);
    }     
    printf("\n");
}