2013-05-04 74 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

相关问题