C 连接两个.y输入
我有两个输入:C 连接两个.y输入,c,C,我有两个输入:video1.y和video2.y。我想连接这两个文件来创建一个video.y文件??我正在用C编写代码。这可能是一个基本问题,但无法做到!!两个输入具有相同的高度和宽度。 代码: video1.y和video2.y的大小为55MB。我的输出为3KB。我无法将这两个输入连接起来。变量c的类型是char这不能保存EOF的值和所有256字节的值 正如在您的计算机上发生的那样,char是一种有符号类型,因此来自fgetc的强制转换返回结果和EOF的强制转换值实际上意味着在文件末尾找到了一
video1.y
和video2.y
。我想连接这两个文件来创建一个video.y
文件??我正在用C编写代码。这可能是一个基本问题,但无法做到!!两个输入具有相同的高度和宽度。
代码:
video1.y和video2.y的大小为55MB。我的输出为3KB。我无法将这两个输入连接起来。变量
c
的类型是char
这不能保存EOF
的值和所有256字节的值
正如在您的计算机上发生的那样,char
是一种有符号类型,因此来自fgetc
的强制转换返回结果和EOF
的强制转换值实际上意味着在文件末尾找到了一个EOF
。问题是,如果文件包含0xFF
字节,则这也被视为EOF
总之,将
c
的类型更改为int
我已更新了问题。如果您只想连接两个输入,然后使用dos命令附加二进制文件,请使用带/b开关的COPY命令。语法如下:copy/b+/b[…]
-或-copy/b+[…]
谢谢Ashwin的回答。我的目标是将两个输入连接起来。我已经为这两个输入编写了c程序,其中存在一些逻辑错误,因此我无法将这些输入连接到输出视频中。但是你的回答对我帮助很大。谢谢Hanks user3710044。在你提出建议后,它工作了。
int main()
{
// Open two files to be merged
FILE *fp1 = fopen("D:\\dump\\video1.y", "rb");
FILE *fp2 = fopen("D:\\dump\\video2.y", "rb");
// Open file to store the result
FILE *fp3 = fopen("D:\\dump\\video.y", "wb");
char c; //Change char to int as per answer given by user3710044..
//...Which is working !!
if (fp1 == NULL || fp2 == NULL || fp3 == NULL)
{
puts("Could not open files");
exit(0);
}
// Copy contents of first file to video3.y
while ((c = fgetc(fp1)) != EOF)
fputc(c, fp3);
// Copy contents of second file to video3.y
while ((c = fgetc(fp2)) != EOF)
fputc(c, fp3);
printf("Merged video1.y and video2.y into video.y");
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}