fprintf不能与C+中的switch/case语句一起使用+; 我有一个简单的C++程序来存储文件中的按下键。 有效的方法是prinf在控制台中显示它,但是fprintf将它保存在文件中是不起作用的。 偶数fprintf(logx,“测试”)仅在我删除while cycle时有效
我的代码:fprintf不能与C+中的switch/case语句一起使用+; 我有一个简单的C++程序来存储文件中的按下键。 有效的方法是prinf在控制台中显示它,但是fprintf将它保存在文件中是不起作用的。 偶数fprintf(logx,“测试”)仅在我删除while cycle时有效,c++,switch-statement,printf,C++,Switch Statement,Printf,我的代码: 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) {
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;
}
intmain(){
字符c;
文件*logx;
logx=fopen(“mylog2.txt”,“w”);
fprintf(logx,“测试”);
while(true)
{
睡眠(10);
对于(int i=8;i您必须以某种方式终止循环。如果您使用Ctrl-C终止程序,则文件
i/O缓冲区将不会刷新,文件将为空
或者,您可以在每个fprintf()
语句后面放置一个fflush(logx);
,以强制将数据输出到文件中。但这只是最后一种手段,因为它会使文件I/O非常慢
还应在循环后关闭文件:
fclose(logx);
请尝试关闭该文件,否则它将保持打开状态,并且可能不会显示写入内容。fclose(logx);应执行以下操作:trick@FrAxl93仍然不工作。1.您应该检查fopen
是否成功。2.输出通常是缓冲的;您可能希望使用fflush(logx)
显式刷新输出(尽管fclose(logx)
还将首先刷新挂起的写入)。如果仍然不起作用,请发布包含fflush
和/或fclose
的代码。如果测试未打印,请删除其余代码并找出原因。在知道如何编写测试之前,请不要指向代码的其余部分。请绝对确保您拥有正确的目录,并且没有写入mylog2.txt文件您的计算机上还有其他功能..谢谢,我添加了flush和fclose,但似乎有帮助的是在visual studio中用X关闭程序,而不是用红方块停止。当我用X关闭程序时,所有内容都保存在文件中。当用stop关闭程序时,没有任何内容被保存,文件为空。如果是初学者的错误,很抱歉。我使用了fflush(logx)在for循环结束时,它运行良好谢谢:)