[英]Read jpeg file to char* buffer c
我正在嘗試將jpeg文件讀取到char *緩沖區中,以便可以將緩沖區作為文本打印出來。 我的問題是我只讀第一行。 這是我的代碼:
FILE* file = fopen(filePath, "r");
fseek(file, 0, SEEK_END);
unsigned long fileLen=ftell(file);
fseek(file, 0, SEEK_SET);
char* file_data;
file_data=(char *)malloc((fileLen+1)*sizeof(char));
while (!feof(file)) {
fread(file_data, fileLen, 1, file);
}
fclose(file);
printf("%s\n", file_data);
有什么想法嗎?
您需要以二進制模式“ rb”打開文件。
如上所述,對二進制jpeg數據進行printf不會產生有用的結果。
sizeof(char)
是1
。 malloc
的返回值。 feof()
作為循環條件幾乎總是錯誤的。 檢查並使用fread
的結果代替。 %s
打印它不起作用-例如,編寫循環並使用%02x
打印出每個字節。 你真正想要的是
FILE* file = fopen(filePath, "rb");
fseek(file, 0, SEEK_END);
unsigned long fileLen=ftell(file);
char* file_data;
rewind(file);
file_data=malloc((fileLen)*sizeof(char));
if (file_data == NULL){
printf("Memory error"); exit (2);
}
int num_read=0;
char s;
while ((num_read = fread(&s, 1, 1, file))) {
strncat(file_data,&s,1);
}
printf("file contents: %s", file_data);
fclose(file);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.