scanfのフリーズに問題があります。私は周りを見回しましたが、いくつかの質問は似ていますが、彼らは私の問題を解決するのに役立っていません。scanfでのフリーズCプログラムの開始
main(int argc, char **argv) {
//FILE *stream = stdin;
if (stdin == NULL) {
printf("Could not open file");
return 0;
}
int exists = 0;
char letter;
char next = 'H';
char word[30];
int frequency = -1;
int sample = -1;
char *channels;
channels=malloc(sizeof(7*sizeof(char)));
int bitres = -1;
int secondE = 0;
while (exists == 0) {
scanf("%c", &letter); //this is the problem, possibly scanf
printf("AFTER");
if (letter == EOF) {
// printf(letter);
printf("HEADER NOT DETECTED");
return 0;
}
私はprintfを使用して問題を特定しました。私は現在、このプログラムにコマンドプロンプトを介して別のファイルをパイプしています。私がscanfに到達すると、それはちょうどハングアップします。誰かが解決策を知っていれば、私は非常に感謝しています。
メモ:scanfの悪い習慣を使用していますか?ファイルポインタにstdinを割り当てるのと同じくらい簡単です(実際にはコメントアウトしています)が、scanfと同じように思えました。
'scanf()'を使用する必要がありますか?特に初心者の方には、しばしば使いにくいです。代わりに 'fgetc()'を試しましたか?また、 'scanf()'はそのような方法で 'EOF'値を返しません(' fgetc() ')。 –
どういう意味ですか?あなたは何かキーを押し続けると何も起こらないか、prntf( "AFTER")が連続して印刷しています..? –
"AFTER"に決して達しません。しかし、scanfの直前にprintf文を置くと、文が印刷されます。 – TechnoloG