fprintf没有写入文件

时间:2012-09-17 00:55:18

标签: c printf

我正在尝试使用以下C代码打印出我传入的数组。它应该以十六进制格式输出每行一个文本,我打开文件没有问题。当我第一次写它时,我没有问题它工作我打开输出文件,我的阵列就在那里。我更改了fileOutName参数,现在我无法打印出任何我尝试更改它的东西以及其他一些东西,似乎没有任何效果。此外,当我调试它似乎pOutfile是一个坏指针,但就像我说它仍然创建文件,它只是不会写入任何东西。任何帮助,将不胜感激。感谢

printoutput(int output[], char * fileOutName){
    int i = 0;
    FILE * pOutfile;
    pOutfile = fopen( fileOutName, "w" );
    while(output[i] != 0){
        fprintf( pOutfile, "0x%0.4X\n", output[i] );
        i++;
    }
}

3 个答案:

答案 0 :(得分:10)

总是自己清理干净。你错过了fclose(pOutfile)

答案 1 :(得分:1)

  

它应该以十六进制格式输出每行一个文本...

这一行

fprintf( pOutfile, "0x%0.4X\n", 5 );

始终格式化相同的数字 - 5。它应该是

fprintf( pOutfile, "0x%0.4X\n", output[i] );

答案 2 :(得分:0)

你指望超出数组边界的元素为0,除非你明确地设置它,否则可能不是这种情况。如果你是,那没关系。通常,传递数组及其大小;这样更安全,更易读,更便携。

printoutput(int output[], int size, char * fileOutName){
    int i=0;
    FILE * pOutfile;
    pOutfile = fopen( fileOutName, "w" );
    while(i!=size){
        fprintf( pOutfile, "0x%0.4X\n", output[i] );
        ++i;
        }
    fclose(pOutfile)
}

另外,我强烈建议习惯使用预增量运算符而不是后增量。在这种情况下,它可能不会有所作为,但对于大型输入或复杂类型,它可以减少执行时间。因此,++ i而不是i ++。