gpt4 book ai didi

c++ - fprintf 不能在 C++ 中使用 switch/case 语句

转载 作者:行者123 更新时间:2023-11-28 01:24:23 27 4
gpt4 key购买 nike

我有一个简单的 C++ 程序来将按下的键存储在文件中。有效的是 prinf 在控制台中显示它,但 fprintf 将其保存在文件中将不起作用。甚至 fprintf(logx, "TEST"); 仅在我删除 while 循环时才起作用。

我的代码:

int main(){
char c;
FILE *logx;

logx = fopen("mylog2.txt", "w");
fprintf(logx, "TEST");

while (true)
{
Sleep(10);
for (int i = 8; i <= 255; i++)
{
if (GetAsyncKeyState(i) == -32767)
{
switch(i) {
case 96:
fprintf(logx, "%d", 0);
break;
case 97:
fprintf(logx, "%d", 1);
break;
case 98:
fprintf(logx, "%d", 2);
break;
case 99:
fprintf(logx, "%d", 3);
break;
case 100:
fprintf(logx, "%d", 4);
break;
case 101:
printf("%d", 5);
break;
case 102:
printf("%d", 6);
break;
case 103:
printf("%d", 7);
break;
case 104:
printf("%d", 8);
break;
case 105:
printf("%d", 9);
break;
default:
c = char(i);
printf("%c", c);
break;
}
}
}
}

return 0;
}

按下所有可能的数字后文件为空。甚至没有将 TEST 写入文件(删除 while 循环时会打印“TEST”)。

感谢任何帮助或提示。

最佳答案

你必须以某种方式终止循环。如果您使用 Ctrl-C 终止您的程序,FILE I/O 缓冲区将不会被刷新并且您的文件将为空。

或者,您可以在每个单独的 fprintf() 语句后面放置一个 fflush(logx); 以强制将数据输出到文件中。但这只是最后的手段,因为它会使文件 I/O 非常慢。

你还应该在循环结束后关闭文件:

fclose(logx);

关于c++ - fprintf 不能在 C++ 中使用 switch/case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610388/

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