C, Odczyt z pliku

0

Cześć, przejdę od razu do rzeczy. Mam zrobić na studia program który m.in. zapisuje i odczytuje wartości z pliku, tylko mam pewien problem: nie mam pojęcia jak działa odczyt. Szukałem na internecie, i znalazłem kod, który działaniem pasowałby do mojego programu, po lekkim zmodyfikowaniu. Problem w tym, że nie do końca go rozumiem, przez co nie potrafię go zmodyfikować. Dynamiczną alokację pamięci wykomentowałem, ale jak ktoś chce, to może także wytłumaczyć jak ona działa :)

Przykładowa zawartość pliku który ma odczytywać:

0;0,841471
1;0,939099
2;1,203012

Program:

int main(){

double pierwsza_liczba;
double druga_liczba;
int nowy_rozmiar;

FILE* plik;
plik = fopen("Wyniki.CSV", "r");
if (plik == NULL)
{
    printf("Ups, cos nie dziala! Nie udalo sie otworzyc pliku CSV. Sprawdz kod i sprobuj zresetowac program\n");
}

printf("Wartosc prawdziwa:                  Wartosc po zaszumieniu:\n");
while (fgetc(plik) != EOF)            //odczytuje znak i przesuwa kursor o 1
{
    fseek(plik, -1, SEEK_CUR);          //  (plik,przesuniecie,pozycja[tutaj aktualna]) <--- Nie rozumiem co to ma robić, przesuwając o 1 w lewo. Jaki jest tego cel
    fscanf(plik, "%lf;", &pierwsza_liczba);
    printf("%lf                            ", pierwsza_liczba);      

    fscanf(plik, "%lf;", &druga_liczba);
    printf("%lf\n", druga_liczba);

}
fclose(plik);

return 0;
}
2
#include <stdio.h>
#include <stdlib.h>

int main()
{
	double pierwsza_liczba,druga_liczba;
	FILE *plik=fopen("Wyniki.CSV","r");
	if(plik)
	{
		while(fscanf(plik,"%lf;%lf",&pierwsza_liczba,&druga_liczba)==2) printf("%lf -> %lf\n",pierwsza_liczba,druga_liczba);
		fclose(plik);
	}
	else printf("Ups, cos nie dziala! Nie udalo sie otworzyc pliku CSV. Sprawdz kod i sprobuj zresetowac program\n");
	return 0;
}

Nie analizuj bezsensownie napisanych programów, masz to samo co wyżej napisane sensownie.

0

A jak tutaj działa warunek pętli?

while(fscanf(plik,"%lf;%lf",&pierwsza_liczba,&druga_liczba)==2)

0

Już chyba ogarnąłem, 2 oznacza koniec pliku. Dziękuję i pozdrawiam.

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