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);