#define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #define LINEMAX 100 typedef struct { unsigned char r; unsigned char g; unsigned char b; } PIXEL; typedef struct { int xsize; int ysize; int level; PIXEL pBuffer[49152]; /* 256*192 */ } IMAGE; int iioLoadFile(IMAGE* pImage, char* fname); int iioSaveFile(IMAGE* pImage, char* fname); void ipCopy(IMAGE* p_in_image, IMAGE* p_out_image); int main(int argc, char* argv[]) { IMAGE in_image_data, out_image_data; if (iioLoadFile(&in_image_data, "img01.ppm")) { return 1; } ipCopy(&in_image_data, &out_image_data); iioSaveFile(&out_image_data, "header.txt"); _CrtDumpMemoryLeaks(); return 0; } int iioLoadFile(IMAGE* pImage, char* fname) { FILE* fpr; char lineBuffer[LINEMAX]; int i; if ((fpr = fopen(fname, "rb")) == NULL) { perror(fname); return 1; } fgets(lineBuffer, LINEMAX, fpr); if (strcmp(lineBuffer, "P6\n")) { fclose(fpr); return 1; } fgets(lineBuffer, LINEMAX, fpr); while (lineBuffer[0] == '#') fgets(lineBuffer, LINEMAX, fpr); sscanf(lineBuffer, "%d %d\n", &pImage->xsize, &pImage->ysize); fgets(lineBuffer, LINEMAX, fpr); sscanf(lineBuffer, "%d", &pImage->level); fclose(fpr); return 0; } int iioSaveFile(IMAGE* pImage, char* fname) { int i; FILE* fpo; return 0; } void ipCopy(IMAGE* p_in_image, IMAGE* p_out_image) { p_out_image->xsize = p_in_image->xsize; p_out_image->ysize = p_in_image->ysize; p_out_image->level = p_in_image->level; }