txtfile.txt是一个包含30行的文件,每行包含50个字符。 我需要将每个字符从txtfile复制到Carray。我怎样才能做到这一点?尝试时出现细分错误。
我尝试了最明显的方法,就是将c复制到数组中。
int cArray[29][49];
fp = fopen("input_blinker.txt", "r");
if(fp==NULL){
perror("Error in opening file");
return(-1);
}
int columnInd = 0;
int rowInd = 0;
do {
c = fgetc(fp);
if (feof(fp)) {
break;
}
cArray[rowInd][columnInd] = c;
columnInd++;
if (columnInd > 29){
rowInd++;
columnInd=0;
}
} while(1);
fclose(fp);
return(0);
我希望将c的值复制到cArray的给定索引中,但是我知道这是不正确的。再一次,我遇到了细分错误。感谢您的帮助(仍在学习c)
答案 0 :(得分:3)
您的数组不够大:
int cArray[29][49];
这将创建一个尺寸为29 x 49的2D数组。您需要一个30 x 50的数组:
int cArray[30][50];
您的边界检查也不正确:
cArray[rowInd][columnInd] = c;
columnInd++;
if (columnInd > 29){
rowInd++;
columnInd=0;
}
第二维的大小在固定后为49、50,因此您应该检查该值。您还应该进行检查,以确保行索引不超出数组的范围。
if (columnInd >= 50){
rowInd++;
columnInd=0;
}
if (rowInd >= 30) {
break;
}