これが私のコードです。「luetut」変数をコメントアウトすると機能します。しかし、次のようにコンパイルすると、プログラムが変数を出力するときにセグメンテーション違反が発生します。これはどういう意味ですか?デバッグ ビルドを作成しようとすると、まったく奇妙なものが表示されます (これとあれの複数の定義)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct rakenne
{
int luku;
float liukuluku;
char* mjono;
} Rakenne;
int main(int argc, char *argv[])
{
int luetut = 0;
Rakenne palikka;
// Rakenne palikka, *palikkaosoitin;
// palikkaosoitin = &palikka;
// while(luetut < 1)
// {
printf("Anna luku:\n");
scanf("%d", &palikka.luku);
// } luetut = 0;
// while(luetut < 1)
// {
printf("Anna liukuluku:\n");
scanf("%f", &palikka.liukuluku);
// } luetut = 0;
printf("Anna merkkijono:\n");
scanf("%s", palikka.mjono);
printf("%i\t%.3f\t%s\n", palikka.luku, palikka.liukuluku, palikka.mjono);
return 0;
}
では、gcc コンパイラが壊れているのでしょうか、それとも何が問題なのですか?