C 读取文件时出现问题
如何在C中读取使用文件*fp保存的矩阵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(
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");
}