C言語初学者です。独学で勉強しているので暖かい目で見て頂けると嬉しいです。
以下コードを実行しているのですが、キーボードから標準入力したときに文字が表示されず
困っています。
キーボードから文字列を入力し、エンターキーを押しても次の行に進むだけで文字列が表示されません。
"EOF"を明示的に入力できていないことが問題なのかと考えていますがわかりません。
windows環境だと"Ctr + d"で明示的に"EOF"を入力できると記載されているURLも
あったのですが、"^D"と表示されるだけでうまくいきませんでした。
対応方法が分かる方、教えて頂けると嬉しいです。
os:windows11
コンパイラ:gcc
実行環境:powershell
コード
#include <stdio.h> #include <ctype.h> #include <stdlib.h> int get_word(char *buf, int buf_size, FILE *fp) { int len; int ch; while((ch==getc(fp)) != EOF && !isalnum(ch)) ; if(ch==EOF) return EOF; len=0; do{ buf[len]=ch; len++; if(len>=buf_size) { fprintf(stderr, "word too long.\n"); exit(1); } }while((ch=getc(fp)) != EOF && isalnum(ch)); buf[len] = '\0'; return len; } int main(int argc, char *argv[]) { char buf[256]; while(get_word(buf, 256, stdin) != EOF) { printf("<<%s>>\n", buf); } return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/18 10:28