簡體   English   中英

將jpeg文件讀取到char *緩沖區c

[英]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不會產生有用的結果。

  1. sizeof(char)1
  2. 您無需在C程序中malloc的返回值。
  3. 使用feof()作為循環條件幾乎總是錯誤的。 檢查並使用fread的結果代替。
  4. 二進制文件的數據不太可能是C字符串。 %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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM