1

Cygwin を使用して、本 Head First C から C プログラムをコンパイルしています。Win 7 ラップトップで、プログラムが処理するテキストを入力すると、文字列のリストを Ctrl-d で終了するように書かれています。まあ、何も起こりません。Ctrl-c を押すと、Cygwin が閉じます。代わりに Ctrl-Z を使用すると聞きましたが、「Stopped」と出力されます。

\n を \0 に置き換える行を追加してみました。それが正誤表にあった問題に対する答えだったからです。

テキストの入力が完了したことをプログラムに示すにはどうすればよいですか? Ctrl-C について多くの質問をしたり、Ctrl-D について尋ねられた場合、プログラムを終了したいという質問をよく見かけます。プログラムを実行し続け、入力を終了したいだけです。

Cygwin mintty 1.2-beta1

ここに 3 つのファイルがあります。この演習では、独自のヘッダー ファイルを作成します。

message_hider.c

#include <stdio.h>
#include <string.h>
#include "encrypt.h"

int main() {

    char msg[80];
    while(fgets(msg, 80, stdin)) {
        if(msg[strlen(msg)-1] == '\n')
            msg[strlen(msg)-1] = '\0';
        encrypt(msg);
        printf("%s", msg);
    }
}

暗号化.c

#include "encrypt.h"


void encrypt(char * message) {

    char c;
    while (*message) {
        *message = *message ^ 31;
        message++;
    }
}

暗号化.h

void encrypt(char * message);
4

3 に答える 3

1

次のステートメントを入れます。

setbuf(stdout, NULL); 

main関数の左中括弧の直後。

これにより、 のバッファリングが判明しstdoutます。このようにして、出力が生成されるとすぐに表示され、問題の診断に役立つ場合があります。

于 2013-08-25T22:59:01.277 に答える