2013-05-04 73 views
0

我有一些麻煩讀取JPG文件,並保存它。我想實現一個客戶端和服務器之間的文件共享系統,我甚至無法讀取JPG並將其保存在同一個進程中。以下是我迄今爲止C:如何從文件中讀取JPG格式和保存呢?

int main(int argc, const char * argv[]) 
{ 
    char *buffer; 
    FILE *picture; 
    FILE *newPicture; 
    struct stat st; 
    long fileSize = 0; 


    picture = fopen("PATH/root/game-of-thrones-poster.jpg", "rb"); 
    fstat(picture, &st); 
    fileSize = st.st_size; 
    if(fileSize > 0) { 
     buffer = malloc(fileSize); 

     if(read(picture, buffer, fileSize) < 0) { 
      printf("Error reading file"); 
     } 
     fclose(picture); 

     newPicture = fopen("PATH/root/new.jpg", "wb"); 
     write(newPicture, buffer, fileSize); 
    } 
    free(buffer); 
} 

當它試圖讀取該文件,它告訴我,檔案大小爲0

+1

如果'fopen'返回NULL,你應該用'perror'(或使用'字符串錯誤(錯誤)')'顯示或許errno';你也應該用'-Wall'編譯,因爲你fstat'的'使用是錯誤的(應該是'FSTAT(的fileno(圖片),ST)'和你最好叫'memset的(ST,0的sizeof(ST))'之前....);順便說一句,爲什麼使用'read'而不是'fread'? – 2013-05-04 06:38:19

+0

其實,你的代碼可能不會編譯。 – 2013-05-04 06:42:24

+0

我的代碼不會編譯 – user2158382 2013-05-04 06:45:14

回答

3

FSTAT()是相同的STAT(),除了文件統計的文件是由文件描述符fd指定的 。

你傳入FILE *fstat期待一個int

+1

我是C新手,我以爲fstat需要一個文件描述符? – user2158382 2013-05-04 06:45:54

+0

文件描述符是由'open'給出的整數。但'fopen'返回一個'FILE'句柄(它不一樣,並且是一個指針)。 – 2013-05-04 10:44:42

相關問題