私はswitch文の使い方を学び、rand()とsrand()関数を使用していますが、このコードを実行しようとするとセグメンテーション違反が発生します。 。これが起こる原因は何でしょうか?このコードを実行すると、セグメンテーションフォルトが発生するのはなぜですか?
#include <stdio.h>
int main(void)
{
int iRandomNum = 0;
srand(time());
iRandomNum = (rand() % 4) + 1;
printf("\nFortune Cookie - Chapter 3\n");
switch (iRandomNum) {
case 1:
printf("\nYou will meet a new friend today.\n");
break;
case 2:
printf("\nYou will enjoy a long and happy life.\n");
break;
case 3:
printf("\nOpportunity knocks softly. Can you hear it?\n");
break;
case 4:
printf("\nYou'll be financially rewarded for your good deeds.\n");
break;
} //end switch
printf("\nLucky lotto numbers: ");
printf("%d ", (rand() % 49) + 1);
printf("%d ", (rand() % 49) + 1);
printf("%d ", (rand() % 49) + 1);
printf("%d ", (rand() % 49) + 1);
printf("%d ", (rand() % 49) + 1);
printf("%d\n", (rand() % 49) + 1);
} //end main function
segフォールトの前にコンソールに何かが表示されますか?基本的に、printfステートメントのどれかを表示しますか? –
[デバッグフラグでコンパイルする](http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html)(通常は '-g')を確認してから、[' gdb']を使ってプログラムを実行してください(http://www.gnu.org/s/gdb/)を参照して、segフォルトが発生している行を正確に把握してください。 –
@adamセグメンテーションフォールトの前には何も表示されません。エラーなしでコンパイルしてから、実行するとセグメンテーションフォールトが発生します。 – nastyn8