Сортировка данных двух текстовых файлов. Счетчик количества строк работает некорректно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача:имеется 2 файла с данными на игроков 2 команд каждая строка состоит из имени,голов,пасов,отсортировать данные этих 2 файлов так чтобы в 3 файле были помещены 6 самых результативных игрока. Написал код но он почему не работает,есть 2 проблемы ,1ая это то что счетчик кол-ва строк работает не верно и вторая почему то результат не записывается в файл.Помогите доработать код,заранее спасибо. Вот мой код :
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct com
    {
          char name[60];
          int goly;
          int pasi;
    } comanda;
    int cmp1(const void * a, const void *b) 
          {
           comanda * pa = (comanda *)a;
           comanda * pb = (comanda *)b;
 
    return ( pa->goly == pb->goly ) ? pa->pasi - pb->pasi : pa->goly - pb->goly;
          }
int main()
{
    int sch=0,n=0,i=0;
    FILE *fp1;
   fp1=fopen("dinamo.txt","a");
    FILE *fp2;
    fp2=fopen("spartak.txt","r");
     while(getc(fp2)!=EOF)
     {
        if(getc(fp2)=='\n')
        {
            n++;//schet4ik kol-va strok
        }
     }
     comanda spartak[n];
     while(i<n)
     {
fscanf (fp2, "%s%d%d", spartak[i].name,&spartak[i].goly,&spartak[i].pasi);//zapis' dannih iz fila fp2 v file fp 1
fprintf(fp1, "\n%s %d %d", spartak[i].name,spartak[i].goly, spartak[i].pasi);
i++;
    }
 
while(getc(fp1)!=EOF)
     {
        if(getc(fp1)=='\n')
        {
            sch++;//schetchik strok
        }
     }
     i=0;
     comanda obsch[sch];
    while(getc(fp1)!=EOF)
     {
fscanf (fp1, "%s%d%d",obsch[i].name,&obsch[i].goly,&obsch[i].pasi);
i++;//zapis' vseh igrokov dl9 otsortirovki
    }
    qsort(obsch, sch, sizeof(comanda), cmp1);//sortirovka(posl element samiy maksimal'niy)
    FILE *fp3;
    fp3=fopen("rezultat.txt","a");//zapis' kone4nogo rezul'tata
   for(i=sch;i<sch-6;i--)
    {
    fprintf(fp3, "\n%s %d %d", obsch[i].name,obsch[i].goly, obsch[i].pasi);
    }
         printf("%s","Done");
getch();
}
Ну что никто ничем помочь не может?
up.

Решение задачи: «Сортировка данных двух текстовых файлов. Счетчик количества строк работает некорректно»

textual
Листинг программы
while(getc(fp2)!=EOF)
     {
        if(getc(fp2)=='\n')
        {
            n++;//schet4ik kol-va strok
        }
     }

Объяснение кода листинга программы

  1. В цикле while открывается файл fp2 для чтения.
  2. Внутри цикла проверяется, не является ли текущий символ концом файла (EOF).
  3. Если текущий символ - это символ новой строки (\n), то увеличивается счетчик n, который отслеживает количество строк в файле.
  4. Цикл продолжается до тех пор, пока не будет достигнут конец файла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы