Witam.Mam do wykonania zadanie.Ma polegac na odczycie z pliku txt wspolrzednych pkt a nastepnie wykonanie obliczen.Plik przykladowy
-3 6
-9 0
-10 8
-10 2
7 5
7 -7
-2 9
10 7
4 -7
-10 4
3 6
10 3
5 -2
2 8
1 7
-10 -4
-1 -10
10 0
6 8
I teraz ,wyczytalem w Pracie ze najlepszym/najwygodniejszym sposobem jest zapis za pomoca fwrite(struktura,sizeof(struktura nazwa),1,wsk_file) bo jak zrozumialem ona zapisuje jako cala strukture i faktycznie jak zapisze i odczytuje to ladnie pobiera.Przyklad kodu
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
struct point_t
{
int x;
int y;
};
int main()
{
char filename[100];
struct point_t pkt_struct;
FILE *wsk_file;
printf("Enter file name:");
scanf("%99s",filename);
wsk_file=fopen(filename,"a+");
if(wsk_file==NULL)
{
printf("Couldn't open file");
return 4;
}
rewind(wsk_file);
while(fread(&pkt_struct,sizeof(struct point_t),1,wsk_file)==1)
{
printf("wartosci z pliku x: %d i y: %d\n",pkt_struct.x,pkt_struct.y);
}
if(wsk_file!=NULL)
fclose(wsk_file);
return 0;
}
W zadaniu nie moge uzyc zadnych tablic oprucz jednej dla nazwy pliku nic wiecej.Dlatego wpadlem na pomysl ze chodzi o to aby pobrac to jako calosc, jesli plik jest zapisany w trybie binarnym to ok pobiera natomiast dla txt przy pobieraniu wyskakuja bardzo dlugie wartosci.Domyslam sie ze wynika to z trybu odczytu /zapisu fread/fwrite tj binarnego
wartosci z pliku x: 540029229 i y: 540478002
wartosci z pliku x: 540478005 i y: 755644205
wartosci z pliku x: 171515954 i y: 924856369
wartosci z pliku x: 757085194 i y: 825035319
za pomoca fwrite ladnie mi to pobiera tylko jak sobie poradzic z txt?Wiec gdy mam narzucone ze bedzie to plik txt z takim ustawieniem moge zastosowac fread i pobierac jako cala strukture
I drugie pytanie: gdy zapisuje strukture z fwrite-m to pozniej wygodnie sie pobiera fread okreslajac jako rozmiar rozmiar struktury i okreslajac 1 natomiast czy tylko wtedy mozna uzyc fread?Tj czy fwrite uklada jakos specjalnie te dane ,czy takie okreslenie pkt jak w txt gdzie mamy liczba1 liczba2 enter on jest w stanie przyjac ze skoro w strukturze ma wartosc
int x i int y
i ja wczytuje wartosci ktore sa tak ulozone tzn ze to jest struktura.Nie wiem czy dobrze sie wyrazilem.Ale gdybym w swojej strukturze mial 4 wartosci np
int x1;
int x2;
int x3;
int x4;
i w linijce bedzie mial wartosci
12 34 45 2 3<enter>
to przyjmie ze skoro oczekuje 4 wartosci struktury a w linii sa 4 wartosci tzn ze jedna linia to struktura?Czy jednak przy zapisie fwrite daje jakies znaki tu sie zaczyna a tu konczy struktura