1

今、私は持っています

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("Invalid number of command line parameters, exiting...\n");
        exit(1);
    }

    int *numReadings;
    load_readings(argv[1], numReadings);

    return 0;
}

    int *load_readings(char fileName[], int *numReadings) {
        FILE *in = NULL;
        in = fopen(fileName, "r");

        if (in == NULL) {
            printf("Unable to open a file named \"%s\", exiting...\n", fileName);
            fclose(in);
            exit(4);
        }

        printf("%s\n", fileName);
        int size = atoi(fileName);
        printf("Size is %d\n", size);
        int *data = (int *) calloc(size, sizeof(int));

        int i;
        for (i = 0; i < size; i++)
            fscanf(in, "%d", (data + i));
        }
    }

そして、size = atoi(fileName)を実行すると、0が返されます。これを含む複数のサイトで、人々が「atoi(argv [1])」を実行するのを見てきましたが、私のものは常に0を返します。私のsample.txtファイルにはたくさんありますスペースで区切られた3桁の数字の。サイズを正しく取得すれば、それ以下のすべてが機能するという印象を受けます。

4

3 に答える 3

0

は、 を整数に変換できるatoi(string_value)場合にのみ数値を返します。たとえば、 の値はになります。しかし、 の場合、整数に変換できないため、値は になります。string_valueint size = atoi("1");size1int size = atoi("asd");0asd

ファイルのサイズを取得したい場合は、struct stat.

于 2012-11-23T17:48:53.443 に答える