Читання рядка з потоку виконується функцією
char *fgets(
char *s, // покажчик на буфер, що приймає рядок
int n, // гранична кількість читаних символів (звичайно розмір буфера)
FILE *stream
) - повертає покажчик на буфер або NULL при помилці.
Читання припиняється, коли досягнутий кінець рядка або прочитано n-1 символів з файлу. Рядок в буфері замикається нульовим символом. Покажчик файлу переміщається за символи CR-LF.
Запис рядка в потік виконується функцією
char *fputs(
char *s, // покажчик на рядок
FILE *stream
) - повертає покажчик на останній записаний символ або EOF при помилці.
Термінальний символ рядка не копіюється. Символи CR-LF дода-ються у файл.
Завдання. Скопіювати текстовий файл xxx.txt у файл yyy.txt по рядках.
Рішення.
#include <stdio.h>
void main() { const int n = 100;
char buf [n];
FILE *in = fopen (noname00. cpp,r);
FILE *out = fopen (noname00. 000,w);
if (!in) return;
while (!feof(in)) { fgets(buf, n, in);
fputs(buf, out);
}
fcloseall(); }