所以…我试着制作我自己的简单键盘记录程序,这个程序适用于在shell中键入的内容,但是如果我双击可执行文件,它会在文件中放入很多这样的内容:ÿ
我知道如果我现在输入a j,它将结束;这是为了调试:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE *fp = fopen("log", "w");
if (fp != NULL)
{
int x=0;
while (x==0)
{
char input=fgetc(stdin);
if (input==*"j")
x=1;
else
{
fprintf(fp, "%c\n",input);
}
}
fclose(fp);
}
return 0;
}
最佳答案
可能是因为双击时没有输入流,或者直接为空。在这些条件下,fgetc
将持续返回EOF
。我不能肯定,但它解释了你看到的症状。
您需要将input
与EOF
进行比较,以查看是否找到流的结尾,因为在这种情况下,您将永远没有机会输入j
。尝试更改:
if (input==*"j")
致:
if ((input == 'j') || (input == EOF))
(你会注意到我已经改变了。。。异常的xonstruct到更简单的。
*"j"
的返回值也应该是'j'
,因为它必须表示每个可能的字符加上fgetc
。关于c - 为什么这两种方法返回不同的东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6313423/