-2

私は使い始めたばかりなfgetsので、何が間違っているのかわかりません。float のテーブルを作成する必要がありますが、標準入力中にセグメント フォールトが発生し続けます。読みやすくするためにすべての「不要な」コードを取り除いたので、はい、パラメーターのすべての引数を使用します。1つの番号を入力してもセグメント障害が発生します。

typedef struct row
{
    int column;
    float value[20];
}ROW;

//in main ROW table[100];

void makeTable2(ROW* table, int* row, int* column)
{
    int counter = 0, counter2;
    int y = 0;

    char str[256], again;

    printf("Enter in the table: ");

    do{

        fgets(str, 256, stdin);

        while(sscanf(str, "%f", &table[*row].value[y]))
            y++;

        (*row)++;

        printf("Add another row? (y or n)? ");
        scanf("%c", &again);

    }while(again == 'y' || again == 'Y');
}
4

2 に答える 2

1

列をなして

   while(sscanf(str, "%f", &table[*row].value[y]))

y が値 20 を超えるとバッファ オーバーフローが発生します。値ごとに個別に scanf() を試してください。

于 2013-09-20T09:24:39.230 に答える