0

IDEとしてVS2010を使用していますが、このコードは、fgetsの行がputs引数として呼び出されるまで正常に機能します。それはファイルの数字をうまく書き留めますが、それはまたいくつかの厄介なぎこちなさを印刷します。たぶん私はどこかで\0を逃している、わからない。他の人はmingwやgccのような他のコンパイラでそれを試しました、そしてそれはうまく働きます。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *a, n, i;
    char str[512];
    FILE *f;
    printf("Insert array size: ");
    scanf("%d", &n);
    if(n <= 0)
    {
        printf("%d is not an allowed value!\n", n);
        return 1;
    }
    a = (int*)malloc(n * sizeof(int));
    if(a == NULL)
        return 2;
    putchar('\n');
    f = fopen("myarray.txt", "r+");
    if(f == NULL)
        return 3;
    for(i = 0; i < n; ++i)
    {
        printf("Insert %d. element of the array: ", i + 1);
        scanf("%d", &a[i]);
        fprintf(f, "%d ", a[i]);
    }
    putchar('\n');
    puts(fgets(str, 512, f));
    free(a);
    fclose(f);
    return 0;
}
4

1 に答える 1

0

fgetsコード内でファイルポインタを呼び出すポイントは、ファイルの最後にある必要があります。

したがって、文字を読み取る前にEOFにヒットするためfgets、ポインタを返す必要があります。NULL

したがって、NULLポインタをに渡しますputs

于 2012-12-22T00:06:17.430 に答える