【发布时间】:2012-02-26 04:56:17
【问题描述】:
我遇到了 scanf 冻结的问题。我环顾四周,虽然有些问题很相似,但它们并没有帮助解决我的问题。
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") 连续打印..?
-
它永远不会到达“之后”。但是,如果我在 scanf 之前放置一个 printf 语句,该语句将打印出来。
标签: c