2010-03-28 84 views
1

我想以二進制形式將數據寫入文件。以二進制形式的文件

我試着用下面

FILE *fp = fopen("binaryoutput.rgb888", "ab+"); 

for(int m=0; m<height; m++) 
{ 
    for (int n=0; n< width; n++)   
    {        
    temp = (pOutputImg+m*3+n*3); // here pOutputImg & temp is a pointer to a unsigned char 
    fprintf(fp,"%u",*temp);    
    }   
} 
fclose(fp); 

我能得到它在pOutputImg strored數據,但不能以二進制形式的提及。

任何人都可以引導我正確的一步..

在此先感謝

+0

這是很難搞清楚的意圖。什麼是temp和pOutputImg的類型?你爲什麼把m和n乘以3?它們中的一個不應該乘以另一個維度? – 2010-03-28 07:43:20

+0

@Marcelo Cantos:這是爲了獲得RGB888的正確格式的數據..通過寫入二進制格式的文件將給我RGB888圖像的正確格式.. – Abhineet 2010-03-28 07:46:49

回答

7

更換fprintf中()用的fwrite()。

例:

fwrite(temp, sizeof(*temp), 1, fp); 

fprintf中的全部目的()是格式化的二進制數據爲可讀的ASCII ......你想要什麼的完全相反。 fwrite()用於直接寫入二進制數據。

+0

@dkantowitz:它的工作原理!謝謝 – Abhineet 2010-03-28 08:15:14

2

如果這是RGB三元的像素圖,你可以用一個行寫二進制數據:

fwrite(pOutputImg, 3, height * width, fp);