Требуется обработать файл по определенному алгоритму. Файл с текстом следующего вида:
76/5612-01 Галицкий
Геннадий
Калистpатович
76/5614-01 Ильев Виктоp
Hиколаевич
76/5615-01 Павлов Hиколай
Иванович
76/5616-01 Коpолев Виктоp
Александpович
76/5620-01 Hикифоpов
Александp
Алексеевич
Нужно привести к виду:
76/5612-01 Галицкий Геннадий Калистpатович
76/5614-01 Ильев Виктоp Hиколаевич
76/5615-01 Павлов Hиколай Иванович
76/5616-01 Коpолев Виктоp Александpович
76/5620-01 Hикифоpов Александp Алексеевич
Не уверен, что наглядно показал что надо сделать, но на словах, необходимо убрать лишние переносы строки(т.е. переносов пустых вообще не надо) и сделать имя и фамилию и отчество на одну строку.
Из того, что я успел выучить, предполагаю примерно такой листинг:
Код: Выделить всё
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#define BUF_SIZE 4096
char buffer[BUF_SIZE];
int main (int argc, char ** argv)
{
int ifd, i;
FILE * outfile;
ssize_t bytes;
if (argc < 2) {
fprintf (stderr, "Too few arg\n");
return 1;
}
ifd = open (argv[1], O_RDONLY);
if (ifd == -1) {
fprintf (stderr, "cannot open file (%s) \n", argv[1]);
return 1;
}
outfile = fopen ("out", "w");
if (outfile == NULL) {
fprintf (stderr, "cannot open output file (%s) \n");
return 1;
}
while ((bytes = read (ifd, buffer, BUF_SIZE)) > 0)
{
for (i = 0; i < bytes; i++)
if (а с условием сплошные непонятки){
fputc (buffer[i], outfile);
}
}
close (ifd);
return 0;
}
И на этом к сожалениюя встаю в ступор. Я не понимаю какое условие сделать для поставленной задачи.
Будьте добры, кто понял, что нужно сделать, подскажите, или натолкните на мысль.
Заранее благодарю