gpt4 book ai didi

c - 为什么这两种方法返回不同的东西?

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:25 25 4
gpt4 key购买 nike

所以...我正在尝试制作我自己的简单键盘记录器,这适用于在 shell 中键入的内容,但是如果我双击可执行文件,它只会在文件中放入很多这样的内容:ÿ

我知道现在如果我输入 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))

(您会注意到我已经将相当...不寻常的 *"j" xonstruct 也更改为更简单的 'j')。

fgetc 的返回值也应该是 int,因为它必须表示每个可能的字符 plus EOF.

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com