Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fprintf不能与C+中的switch/case语句一起使用+; 我有一个简单的C++程序来存储文件中的按下键。 有效的方法是prinf在控制台中显示它,但是fprintf将它保存在文件中是不起作用的。 偶数fprintf(logx,“测试”)仅在我删除while cycle时有效_C++_Switch Statement_Printf - Fatal编程技术网

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循环结束时,它运行良好谢谢:)