Zapis do pliku

Odpowiedz Nowy wątek
2011-07-19 19:53
sambadeldiablo
0

Witam
Mam poki co banalny program, ktory tworzy baze danych, umozliwia zapis do pliku i pozniejszy odczyt z pliku. Ale chcialbym dodac opcje wydrukowania zapisanych do pliku danych, a w pliku zapisuja mi sie one w dosc dziwny sposob:
user image

sama funkcja zapisu wyglada tak (tylko nie czepiac sie ew. kiepskiej jakosci kodu, pisalem to dawno temu)

 void zapisz(char* nazwa)
{
current=root->Next;
FILE* stream;
stream=fopen(nazwa,"w+b");
do
{
fwrite(current,sizeof(PERSON),1,stream);
current=current->Next;
}
while(current!=NULL);
fclose(stream);
cout<<"Sukces";
_getch();
}

W jaki sposob zmodyfikowac ja, aby zapisywala dane do pliku w postaci typu:
user image

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-19 19:56
0

To zapisuj tak, a nie walisz surowo.

Pozostało 580 znaków

2011-07-19 20:23
sambadeldiablo
0

Co chcesz przez to powiedziec?

Pozostało 580 znaków

2011-07-19 20:26
Rev
0

Zapisuj każde pole po kolei, a pomiędzy nimi dawaj przejście do nowej linii.


Pozostało 580 znaków

2011-07-19 20:38
sambadeldiablo
0

Czyli tak "z buta". ale fajnie by bylo, jakby cala funkcja zapisu byla dosc uniwersalna i zapisywala po prostu dana pozycje ze struktury niezaleznie od ilosci pozycji w strukturze.

Pozostało 580 znaków

2011-07-19 20:40
0

Takie rzeczy tylko w erze ;) No może jeszcze w Javie, C#. Niestety w C/C++ nie ma refleksji.


Pozostało 580 znaków

2011-07-19 21:26
sambadeldiablo
0

No ok, zrobilem po kolei, testowo dla jednego chara i nadal wykrzacza mi txt.

 PERSON* nowa=new PERSON;
             cout<<"Podaj imie: ";
             cin>>nowa->FirstName;
             char temp[20];
             strcpy(temp,nowa->FirstName);
             PERSON* ostatni=GetLast();
             nowa->Next=NULL;
             ostatni->Next=nowa;
 
             current=root->Next;
             FILE* stream;
             stream=fopen("kiepscy.txt","w+b");
             fwrite(temp,sizeof(temp),1,stream);
             current=current->Next;
             fclose(stream);
             cout<<"Sukces";

i po wpisaniu przykladowo "Stefan" w pliku txt wyskakuje mi

Stefan w˙˙˙˙ăÂÁw¸Âw

Pozostało 580 znaków

2011-07-19 21:34
0

Bo za dużo piszesz. W fwrite nie sizeof(temp) tylko strlen(temp)


Pozostało 580 znaków

2011-07-19 21:47
sambadeldiablo
0

Ok, dziala teraz juz wszystko tak jak ma dzialac :) Dzieki wielkie!

Pozostało 580 znaków

2011-07-19 21:52
sambadeldiablo
0

W zasadzie jeszcze jedno, jesli ktokolwiek ma cierpliwosc, bo sam do siebie juz nie mam nawet ;P
Jak wrzucic spacje albo enter?
Coby sie w pliku zapisalo np:
A B
C
a nie ABC ?

Pozostało 580 znaków

2011-07-19 22:19
0

fragment pewnej strony:
\n Newline
\t Horizontal Tab
\v Vertical Tab
\b Backspace
\r Carriage Return
\f Form feed
\a Audible Alert (bell)
\ Backslash
\? Question mark
\' Single quote
\" Double quote
\000 Oct - No one uses Octal unless they have an ICL background...
\xhh Hex number
...

edytowany 1x, ostatnio: yet_another_bug, 2011-07-19 22:21
Oct - No one uses Octal unless they have an ICL background... o_O - O_o 2011-07-20 14:51

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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