Я пытаюсь написать небольшой фрагмент кода, который поочередно объединяет строки из двух файлов и записывает результаты в другой файл, указанный пользователем.
За исключением того, что в данный момент он игнорирует символ '\ 0' и копирует весь файл за раз, а не строку за раз.
#include <stdio.h>
#include <stdbool.h>
int main (void)
{
char in1Name[64], in2Name[64], outName[64];
FILE *in1, *in2, *out;
printf("Enter the name of the first file to be copied: ");
scanf("%63s", in1Name);
printf("Enter the name of the second file to be copied: ");
scanf("%63s", in2Name);
printf("Enter the name of the output file: ");
scanf("%63s", outName);
// Open all files for reading or writing
if ( (in1 = fopen(in1Name, "r")) == NULL )
{
printf("Error reading %s", in1Name);
return 1;
}
if ( (in2 = fopen(in2Name, "r")) == NULL )
{
printf("Error reading %s", in2Name);
return 2;
}
if ( (out = fopen(outName, "w")) == NULL )
{
printf("Error writing to %s", outName);
return 3;
}
// Copy alternative lines to outFile
bool notFinished1 = true, notFinished2 = true;
int c1, c2;
while ( (notFinished1) || (notFinished2) )
{
while ( ((c1 = getc(in1)) != '\0') && (notFinished1) )
{
if (c1 == EOF)
{
notFinished1 = false;
}
else
{
putc(c1, out);
}
}
while ( ((c2 = getc(in2)) != '\0') && (notFinished2) )
{
if (c2 == EOF)
{
notFinished2 = false;
}
else
{
putc(c2, out);
}
}
}
// Close files and finish
fclose(in1);
fclose(in2);
fclose(out);
printf("Successfully copied to %s.\n", outName);
return 0;
}