gpt4 book ai didi

c - fprintf 插入随机下一行?

转载 作者:行者123 更新时间:2023-11-30 17:30:45 25 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的程序,它将数据从一个文件“RAW 图像文件”一点一点地提取到另一个文件。除了写入新文件时,它必须是十六进制,并且每行只需 (640*6) = 3840 个字符,之后它应该是 NEXTLINE 并再次从 0 到 3840 开始。

如果我使用 n 文本编辑器查看文件,我应该会在 480 行中看到每行 3840 个字符。我的问题是我不断收到随机的下一行,但我不明白为什么?是否可能是因为使用 Printf 时,某些位组合在一起可能看起来像下一行字符?我也尝试过使用 WRITE() 将其全部转储到文件中,但我使用缓冲区数组来构造它,但仍然做同样的事情,并且还逐位写入,但不打印为十六进制.

这里的代码只是为了给你一个想法,我已经拉了一些牛仔 Action 来尝试操纵它来做我想做的事情,但没有任何效果..其中一些可能根本没有意义。

#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;
}

最佳答案

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

关于c - fprintf 插入随机下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com