0

以下の私のコードは、開始時に何も出力しません。1,2,3 と入力すると、次のように表示されます。

1Enter the value of argv[1]:49
2Enter the value of argv[2]:50
3Enter the value of argv[3]:51

ループを使用するときに refresh() をどこに配置する必要があるかについて、私はかなり混乱しています。forループ内のコメントのようなものを達成しようとしています。

int main()
{
    initscr();
    int argv[3];
    int argvLen = sizeof(argv)/sizeof(*argv);

    for (int i=0; i<argvLen; i++)
    {
        int n = getch();
        printw("Enter value of argv[%d]: %d \n", i+1, n);
        argv[i] = n;
        refresh();

        //cout << "Enter value of argv[" << i+1 << "]:" << endl;
        //cin >> argv[i];
    }

    endwin();
    return 0;
}
4

4 に答える 4

0

scanf および関連する関数を使用して、整数値を読み取ることができます。

int main()
{
    int i;
    int values[3];
    int valuesLen = sizeof(values)/sizeof(*values);

    for (i=0; i<valuesLen; i++)
    {
        printf("Enter value of values[%d]: ", i+1);
        scanf("%d", &values[i]);
        printf("Value of values[%d]: %d \n", i+1, values[i]);                
    }

    return 0;
}
于 2013-09-04T10:07:57.333 に答える
0

マニュアルページに記載されているように、更新を行うため、明示的な呼び出しrefreshは必要ありません。getch

ウィンドウがパッドではなく、最後に wrefreshを呼び出してから移動または変更されている場合、 別の文字が読み取られる前にwrefresh が呼び出されます。

cooked書かれているように、最初は curses がモードになっているため、プログラムは何も表示していないように見えます。への呼び出しと への呼び出しの後に追加するcbreakと、個々の文字を入力できるようになります (これも、ncurses のマニュアル ページを参照してください)。noechoinitscr

これらの変更により、追加の問題があります: 最後のprintwものが表示されません。それを修正するgetch()直前に置く。endwin()

于 2015-04-19T12:59:17.833 に答える