【发布时间】:2019-02-09 20:22:41
【问题描述】:
我有一个简单的 C++ 程序来将按键存储在文件中。
有效的是prinf 在控制台中显示它,但fprintf 将其保存在文件中将不起作用。
甚至fprintf(logx, "TEST"); 也仅在我在循环中删除时才有效。
我的代码:
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 都没有写入文件(当循环被删除时,打印“TEST”)。
感谢任何帮助或提示。
【问题讨论】:
-
尝试关闭文件,否则它仍然处于打开状态,并且可能不会出现文字。 fclose(logx);应该做的伎俩
-
@FrAxl93 仍然无法正常工作。
-
1.您应该检查
fopen是否成功。 2.输出通常是缓冲的;您可能希望使用fflush(logx)显式刷新您的输出(尽管fclose(logx)也会先刷新挂起的写入)。如果这仍然不起作用,请发布包含fflush和/或fclose的代码。 -
如果 TEST 未打印,请删除其余代码并找出原因。在您知道如何编写 TEST 之前,没有必要再看其余的代码。确保您拥有正确的目录,并且没有写入计算机上其他地方的 mylog2.txt 文件..
-
感谢我很好地添加了flush和fclose,但似乎有帮助的是用X关闭程序而不是Visual Studio中的红色方块停止。当我用 X 关闭程序时,所有内容都保存在文件中。当停止时,什么都没有保存并且文件是空的。对不起,如果是初学者的错误。
标签: c++ switch-statement printf