首页 > 解决方案 > 为什么 atoi() 在此代码中的第一次调用时返回 0?

问题描述

在以下代码中,我试图将 CSV 文件(按顺序:#、#、#、#)读入二维数组。但是,我遇到了这条线的问题

arry[counter][0] = atoi(numOne);

不管用。具体来说, atoi(numOne) 返回 0。但是,它在 printf("%s", numOne); 中打印出它的 int 值。

结果,我的数组如下所示:

0,1,3,2

0,0,5,4

0,9,8,1

0,10,6,3

缺少每行的第一项。

为什么是这样?

FILE *fp = fopen(argv[1], "r");
int counter = 0;
char line[150];
while (fgets(line, 150, fp)) {
    printf("%s", line);
    counter++;
}
int arry[counter-1][4];
NUM_ROWS = counter - 1;


rewind(fp);
//Skip First Line of Var Names
fgets(line, 150, fp);
counter = 0;

while(fgets(line, 150, fp)) {
    char *numOne = strtok(line, ",");
    char *numTwo = strtok(NULL, ",");
    char *numThree = strtok(NULL, ",");
    char *numFour = strtok(NULL, ",");


    arry[counter][0] = atoi(numOne);
    arry[counter][1] = atoi(numTwo);
    arry[counter][2] = atoi(numThree);
    arry[counter][3] = atoi(numFour);

    printf("%s%s%s%s", numOne, numTwo, numThree, numFour);

    counter++;
}

标签: arrayscatoi

解决方案


推荐阅读