fprintf随机插入下一行?

时间:2014-07-28 09:57:43

标签: c string filewriter

我正在尝试编写一个非常简单的程序,将一个文件“RAW Image file”中的数据逐位传输到另一个文件。 除非它被写入新文件,它需要是HEX并且还需要特别是每行为(640 * 6)= 3840个字符,之后它应该是NEXTLINE并再次从0到3840开始。

如果我用n文本编辑器查看我的文件,我应该在每行中看到480个字符,共480行。 我的问题是我继续随机下一行,我不知道为什么?可能是因为在使用Printf时,某些位可能看起来像下一行字符? 我已经尝试使用WRITE()将它全部转储到一个文件中,但是我使用Buffer数组构造它但仍然是同样的事情并且还会一点一点地写入不打印为HEX的文件。

这里的代码只是为了给你一个想法,我已经拉了一些牛仔动作试图操纵它去做我想要的但没有任何作用......其中一些根本没有意义。< / p>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <fcntl.h>
//#include <unistd.h>

char *readFile(char *fileName);

int main()
{
    char *pix;pix = (char *)malloc(sizeof(char));
    char Buff[1843201];
    char pix8[7];
    //int x=0;

    FILE *fpw;
///////////////////////////////////////////////////////////
    fpw=fopen("NewBmp.bin", "wb");
    pix = readFile("test.bin");

    int y,z,ByteC;
    unsigned long x;
    for (y=0;y<=(480);y++)
    {
        for(x=0;x<=(3840);x+=2)
        {                       
            Buff[(480*y +x)]=pix[(480*y +x)];
            ByteC = pix[(480*y +x)];
            ByteC |= (unsigned char)((pix[(480*y +x+1)])<<4);   //<<--Prototype

            fprintf(fpw, "%x",(unsigned char)ByteC);                            
        }
        Buff[(480 * y)+1]='\n';
        fprintf(fpw,"%c","\n");


    }
    //fwrite(Buff , 1 , 1843201 , fpw );
    fclose(fpw);
}

char *readFile(char *fileName) {
    FILE *file = fopen(fileName, "r");
    char *code;
    size_t n = 0;
    int c;

    if (file == NULL) return NULL; //could not open file
    fseek(file, 0, SEEK_END);
    long f_size = ftell(file);
    fseek(file, 0, SEEK_SET);
    code = malloc(f_size);

    while ((c = fgetc(file)) != EOF) {
        code[n++] = (char)c;
    }

    code[n] = '\0';        

    return code;
}

1 个答案:

答案 0 :(得分:0)

只是一个猜测,但我认为fprintf(fpw,"c","\n")应该是fprintf(fpw,"%c","\n")。为什么不只是fprintf(fpw, "\n")