Thread View: pl.comp.lang.c
4 messages
4 total messages
Started by Tomasz Cichacki
Fri, 16 Jan 1998 11:37
fscanff i sekwencja formatujaca
Author: Tomasz Cichacki
Date: Fri, 16 Jan 1998 11:37
Date: Fri, 16 Jan 1998 11:37
27 lines
1177 bytes
1177 bytes
Mam taki kawalek programu
FILE *plik;
plik = fopen("dane.dxt","r");
rewind(plik);
fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]",ind,imie,nazwisko,kierunek);
printf("\n:%s\n:%s\n:%s\n:%s",ind,imie,nazwisko,kierunek);
fclose(plik);
plik dane.dxt zawiera taka linie
22334|Jan|Nowak|info
chcialbym aby pola oddzielone "|" zostaly przypisane odpowiednim zmiennym,
ale cos mi nie gra, moze wiecie co?
Tomek
hermes@venus.wmid.amu.edu.pl
http://venus.wmid.amu.edu.pl
tel 0 602 664 791
--
Tomek
hermes@venus.wmid.amu.edu.pl
http://venus.wmid.amu.edu.pl
tel 0 602 664 791
Re: fscanff i sekwencja formatujaca
Author: Marek Kotowski
Date: Fri, 16 Jan 1998 12:19
Date: Fri, 16 Jan 1998 12:19
14 lines
957 bytes
957 bytes
Tomasz Cichacki wrote:
>
> Mam taki kawalek programu
>
> FILE *plik;
> plik = fopen("dane.dxt","r");
> rewind(plik);
> fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]",ind,imie,nazwisko,kierunek);
Brakuje operatorow brania adresu:
fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]",
&ind,&imie,&nazwisko,&kierunek);
HTH
Marek Kotowski
Re: fscanff i sekwencja formatujaca
Author: Radoslaw Gancarz
Date: Tue, 20 Jan 1998 14:14
Date: Tue, 20 Jan 1998 14:14
26 lines
1766 bytes
1766 bytes
Marek Kotowski <mkot@imm.org.pl> wrote:
> Tomasz Cichacki wrote:
>>
>> Mam taki kawalek programu
>>
>> FILE *plik;
>> plik = fopen("dane.dxt","r");
>> rewind(plik);
>> fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]",ind,imie,nazwisko,kierunek);
^^^^
Czy tutaj czasem nie powinno byc %5s ???
> Brakuje operatorow brania adresu:
> fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]",
> &ind,&imie,&nazwisko,&kierunek);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A te & to po co ??? - wszystkie teksty sa w tablicach ktore sa dla wywolan
funkcji tozsame ze wskaznikami. Poprzednia wersja byla pod tym wzgledem
poprawna.
Proponujesz przekazanie parametru typu char ** :-). Wiekszosci kompilatorow
niezbyt to sie podoba (zwykle ignoruja takie rzeczy).
Radek
1+-------------------------------------------------------------------------+1
2| Radoslaw Gancarz feanor@zeus.polsl.gliwice.pl |2
3+--------Zeby zadac pytanie, trzeba znac chociaz czesc odpowiedzi.--------+3
Re: fscanff i sekwencja formatujaca
Author: Marek Kotowski
Date: Tue, 20 Jan 1998 16:08
Date: Tue, 20 Jan 1998 16:08
32 lines
2290 bytes
2290 bytes
Radoslaw Gancarz wrote: > > > Brakuje operatorow brania adresu: > > fscanf(plik,"%5c%*c%s[^|]%s[^|]%s[^|]", > > &ind,&imie,&nazwisko,&kierunek); > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > A te & to po co ??? - wszystkie teksty sa w tablicach ktore sa dla wywolan > funkcji tozsame ze wskaznikami. Poprzednia wersja byla pod tym wzgledem > poprawna. > Proponujesz przekazanie parametru typu char ** :-). Wiekszosci kompilatorow > niezbyt to sie podoba (zwykle ignoruja takie rzeczy). Byc moze pisalem nazbyt skrotowo. Juz po wyslaniu postu stwierdzilem, ze z ciagu formatujacego wynika, ze sa to w wiekszosci tablice znakow. Mozna by zatem zrezygnowac z operatora & (niewiadomo, co ze zmienna ind). Uznalem jednak, ze takie rozwiazanie mozna zostawic. Nagminnym bledem jest zapominanie o operatorze & w wywolaniu fscanf i funkcji podobnych. Mozna zatem przyjac, ze ze stylistycznego punktu widzenia, lepiej jest zachowac operator & takze w tym przypadku. Inaczej w jednych wywolaniach fscanf beda operatory &, w innych nie. Jest to zreszta kwestia dyskusyjna i nie bede sie upieral. Natomiast &nazwisko nie jest typu char**. W RATIONALE wyraznie podkreslono, ze dla celow zachowania ogolnej spojnosci standardu przyjeto, ze operator & powinien byc stosowalny takze do tablic. Zwieksza sie jego abstrakcyjnosc (mozna go stosowac do kazdego obiektu). Kompilator moze oczywiscie wysunac zastrzezenie, ale kod nie jest niepoprawny (w istocie kompilator moze wypisywac rozne ostrzezenia - jest to sprawa implementacji jezyka). Pozdrawiam Marek Kotowski
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads