3

我正在尝试使用以下 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++;
    }
}
4

3 回答 3

10

总是在自己之后清理。你缺少一个fclose(pOutfile).

于 2012-09-17T01:02:23.783 回答
1

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

这条线

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

总是格式化相同的数字 - 5。应该是

fprintf( pOutfile, "0x%0.4X\n", output[i] );
于 2012-09-17T00:58:17.527 回答
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++。

于 2012-09-17T01:30:09.063 回答