将字符从文件复制到数组中

时间:2019-06-21 19:06:19

标签: c

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)

1 个答案:

答案 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;
        }