Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sem9_2

.c
Скачиваний:
0
Добавлен:
29.05.2019
Размер:
1.9 Кб
Скачать
#include <stdio.h>

int num_lines(FILE* f);//ф-ция, считающая кол-вл строк

int main(int argc, char** argv)
{
 if(argc != 3)//если кол-во аргументов не равно 3
 {
  puts("usage: sem9_2 <filename1> <filename2>");
  return 0;
 }
 FILE *f1, *f2;
 f1 = fopen(argv[1], "r");//открываем файлы
 f2 = fopen(argv[2], "r");
 int len1 = num_lines(f1);//считаем кол-во втрок в файлах
 int len2 = num_lines(f2);

 int c = 0;
 FILE* currf = f1;//"указатель" на файл, который будет чередовать 1 и 2 файл

 do
 {
  c = '\n';
  do
  {//выводим строку из файла currf
   putchar(c);
   c = fgetc(currf);
  }while((c != '\n') && (c != EOF));
  
  if(currf == f1)
  {
   len1--;//уменьшаем кол-во оставшихся строк в 1 файле
   if(len2 > 0)
    currf = f2;//если в другом файле еще есть невыведенные строки меняем currf на другой файл
  }
  else
  {
   len2--;//уменьшаем кол-во оставшихся строк в 2 файле
   if(len1 > 0)//если в другом файле еще есть невыведенные строки меняем currf на другой файл
    currf = f1;
  }
 }while((len1 > 0) || (len2 > 0));//поха хотя бы в 1 файле остались невыведенные строки
 putchar('\n');
 return 0;
}
int num_lines(FILE* f)
{
 int c = 0;
 int lines_count = 0;
 do//проходим по всем символам файла
 {
  c = fgetc(f);
  if(c == '\n')//если символ перехода на новую строку - увеличиваем кол-во строк
   lines_count++;
 }while(c != EOF); 
 fseek(f, 0, SEEK_SET); //переходим в начало файла
 return lines_count;
}
Соседние файлы в предмете Информатика