Nie działająca funkcja - Program liczący średnią z pliku

0

Jestem w trakcie pisania takiego programu:

*Zadanie polega na stworzeniu narzędzia do przetwarzania plików o pewnej specjalnej strukturze.
Są to pliki tekstowe. Każda linijka tekstu zawiera pewną, z góry nieokreśloną, listę liczb
zmiennoprzecinkowych zapisanych w dowolnym dopuszczalnym w C formacie i rozdzielonych znakami białymi.
Jedyne co możesz założyć, to ograniczenie na liczbę znaków w linii.
Funkcjonalność programu: użytkownik podaje nazwę pliku z rozszerzeniem txt o powyższej postaci (nie musisz sprawdzać poprawności struktury pliku). Program tworzy nowy plik o takiej samej nazwie, lecz z rozszerzeniem dat. Nowy plik ma tyle samo linijek co stary plik i każda linijka zawiera jedną liczbę równą średniej arytmetycznej liczb stojących w odpowiedniej linii starego pliku.
Uwaga: jeśli linia w starym pliku jest pusta (zawiera jedynie znaki białe, to odpowiednia linia w nowym
pliku zawiera liczbę 0.0. *

*Przykład: jeśli plik zawiera 3 następujące linijki
1.0 2.0e2

-1.0 2.0 3
to nowy plik powinien zawierać linijki
100.5
0.0
1.33333333333*

Ale nie w tym na razie rzecz, mam pytanie, czy może Ktoś wie dlaczego w tej funkcji druga pętla while ani razu nie chce się wykonać?

void find_a_line(FILE *fp)
{
    char line[MAXLINE], space[] = " \n", * clipboard;
    double number, sum, mean;
    int counter, counter_2, p;
    
    counter_2 = 0;
    p=count_line(fp);
    
    while(counter_2<p)
    {
    sum = mean = counter = 0;
    
    fgets(line, MAXLINE, fp);
    clipboard = strtok( line, space );
   
    while( clipboard != NULL)
    {

        number=atof(clipboard);
        sum = sum + number;
        counter++;
        clipboard = strtok( NULL, space );
        
    }
    
        mean = sum/ counter;
        printf("%f ",mean);
        counter_2++;
    }
    
    }

0

Co przez to rozumiesz? U mnie się wykonuje.
https://wandbox.org/permlink/yyaXe4QyTJw2s52z

0

Dla danych z zadania mam takie coś jak na załączniku i moim zdaniem to wina tego, że pętla w środku ani razu nie rusza i mamy dzielenie 0/0

0

Przejedź debuggerem, bo mam wrażenie że nie masz pojęcia co tam się dzieje.

0

Coś jest źle z tą funkcją, bo jak wpisze np po prostu, że p=3 to wykonuje się pętla w środku, ale jak mam, że p = count_line to już mam trzy razy nan

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 1000
int count_line(FILE *fp)
{
    int counter;
    char c;
    
    counter = 1;
   
    while((c = fgetc(fp)) != EOF )
    {
        if(c == '\n') counter++;
    }
    
    return counter;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1