構造体を学習しようとしていますが、以下のコードでは論理的ではなくエラーが発生していますが、実行中にファイルが停止しています。 gets(s2.name)の直後に発生する構造体で使用するとプログラムがハングします
#include<stdio.h>
struct student
{
char *name;
float mark1,mark2,mark3;
float total;
};
int main()
{
struct student s1,s2,s[3];
s1.mark1=6;s1.mark2=7;s1.mark3=8;
s1.total = s1.mark1+s1.mark2+s1.mark3;
printf("\nEnter the name of s2 : ");
gets(s2.name);
/*when above line is inserted program hangs and code below does not execute*/
puts(s2.name);
s1.name = "shanky";
puts(s1.name);
getch();
return 0;
}
明らかにコンパイルエラーはありません。 gccコンパイラの使用
不確定の間に自動保存期間を持つオブジェクトの値を使用するための未定義の動作。 – EOF
1行につき1つのステートメントが有効です。すなわち、 - >新しい行を始める –
['gets()'を使わないで、危険です。](http://stackoverflow.com/q/1694036/2173917)。代わりに['fgets()'](https://linux.die.net/man/3/fgets)を使用してください。 –