所以…我试着制作我自己的简单键盘记录程序,这个程序适用于在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。我不能肯定,但它解释了你看到的症状。
您需要将inputEOF进行比较,以查看是否找到流的结尾,因为在这种情况下,您将永远没有机会输入j。尝试更改:

if (input==*"j")

致:
if ((input == 'j') || (input == EOF))

(你会注意到我已经改变了。。。异常的xonstruct到更简单的。
*"j"的返回值也应该是'j',因为它必须表示每个可能的字符加上fgetc

关于c - 为什么这两种方法返回不同的东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6313423/

10-14 17:45
查看更多