3

プログラムをデバッグしようとしていますが、入力用の txt ファイルが必要です。プログラムを楽しむためにテキストファイルをどのようにgteするかはわかりません。
私はgcc -g filename.c filename1.c
a < text.txt としてコンパイルし
、すでにデバッガーでいくつかのことを行っていました。ファイルが NULL であるため、プログラムは終了し続けます。txt ファイルをプログラムに入力するにはどうすればよいですか?

4

1 に答える 1

4

編集:

または、プログラム内で「textfile.txt」を開こうとしてfopenいますか?


例を挙げるためだけに/明確にするために:

の最初の; これは悪いコンパイル行であり、問​​題がある場合はさらに悪化しますが、もう一度単純化してください。

次のようなものを使用します。

$ gcc -Wall -Wextra -pedantic -ggdb -o myprog mycode.c
#include <stdio.h>

int main(void)
{
    int i;

    while((i = getchar()) != EOF)
        putchar(i);
    return 1; /* Normally you would use 0, 1 indicate some error. */
}

ターミナルで:

$ gdb ./my_prog
(gdb) r < textfile.txt
Starting program: /home/xm/devel/ext/so/my_prog < textfile.txt
Text text text
Text text text
Text text text
Text text text

[Inferior 1 (process 17678) exited with code 01]
(gdb) q

スレッド (悪いコードですが...):

#include <pthread.h>
#include <stdio.h>

void *say_hello(void *threadid)
{
    printf("Helllu!\n");
    pthread_exit(NULL);
}

void *read_stdin(void *threadid)
{
    int i;

    while((i = getchar()) != EOF)
        putchar(i);
    pthread_exit(NULL);
}

int main(void)
{
    pthread_t threads[2];
    pthread_create(&threads[0], NULL, read_stdin, (void*)0);
    pthread_create(&threads[1], NULL, say_hello,  (void*)1);
    pthread_exit(NULL);
}

ターミナルで:

$ gdb ./my_prog
(gdb) r < textfile.txt
Starting program: /home/xm/devel/ext/so/my_prog < textfile.txt
[Thread debugging using libthread_db enabled]
[New Thread 0xb7fd9b70 (LWP 17843)]
Text text text
Text text text
Text text text
Text text text

[New Thread 0xb77d8b70 (LWP 17844)]
Helllu!
[Thread 0xb77d8b70 (LWP 17844) exited]
[Thread 0xb7fd9b70 (LWP 17843) exited]
[Inferior 1 (process 17840) exited normally]
于 2012-04-24T03:52:08.183 に答える