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