1

で乱数を生成できないようCですUbuntu 12.04

私は以下のコードを書きました:

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main (int argc,char* argv[])
{
     int number;
     clear();

     number = rand() % 2; // want to get only 0 or 1

     printf("%d",number);
     getch();
     return 0;
}

ファイルに「test_gcc.c」という名前を付けました。

その後、次のようにコンパイルします。

$ sudo gcc -o test_gcc test_gcc.c

そして、次のメッセージが表示されます。

/tmp/ccT0s12v.o: In function `main':
test_gcc.c:(.text+0xa): undefined reference to `stdscr'
test_gcc.c:(.text+0x12): undefined reference to `wclear'
test_gcc.c:(.text+0x44): undefined reference to `stdscr'
test_gcc.c:(.text+0x4c): undefined reference to `wgetch'
collect2: ld returned 1 exit status

誰かが私が間違ったことを教えてもらえますか?

Cまた、Ubuntu 12.04使用時に乱数を生成する方法はgcc?

前もって感謝します!

4

4 に答える 4

6

これは乱数とは関係ありません。curses問題は、ライブラリなしでリンクしていることです。

コマンドラインに次を追加-lncursesする必要があります。gcc

 $ gcc -o test_file test_file.c -lncurses
于 2012-09-15T15:50:24.007 に答える
1

乱数ジェネレーターをシードしませんでした。<-- エラーの理由ではない

srand(time(0));呼び出す前に使用しrand()ます。

于 2012-09-15T15:50:18.497 に答える
1

srand ( time(NULL) );beforeを使用number = rand() % 2;して、実行可能ファイルが実行されるたびに異なる乱数を取得します。

エラーの場合:

  • 代わりに削除clear()して使用すると、正常に機能するはずです。getchar()getch()

  • getch()バッファなし入力をサポートするコンパイラで使用されますが、gcc の場合はバッファ付き入力なのでgetchar().

コード:

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main (int argc,char* argv[])
{
    int number;
    srand(time(NULL));
    number = rand() % 2; // want to get only 0 or 1
    printf("%d",number);
    getchar();
    return 0;
}
于 2012-09-15T15:55:17.043 に答える
0

試す :

 gcc -o test_gcc test_gcc.c -lncurses
于 2012-09-15T15:52:16.117 に答える