Wczytywanie całej lini do łańcucha znaków.

0

Jak będę miał trochę więcej czasu to poczytam książki i kursy, ale na razie będę was dręczył pytaniami z podstaw C.
Tak więc pytanie jak w ANSI C wczytać całą linię do łańcucha znaków. Robię różne kombinacje z scanf, ale coś mi nie idzie. Jakbym nie kombinował, to kończy wczytywanie na spacji (co zresztą jest normalne). Prawdopodobnie trzeba użyć innej funkcji. Może mi ktoś powiedzieć jakiej? (myślałem, że pomocw TP jest niewygodna, ale ta z BorlandC jest jeszcze gorsza ;-( )

0

możesz użyć :
gets(char *)
np;
[code]char tab[20];
gets(tab);[/code]
lub odpowiednio sformatować scanf , np żeby wczytywał tylko litery cyfry i spacje :
[code]scanf("%[a-zA-Z0-9 ]",tab);[/code]

jeśli używasz strumieni ( #include ) , to dla obiektu cin mamy metode : getline() , ma ona 3 parametry , przy czy czym 3 jest opcjonalny . 1arg - wsk do tablicy ( char*) , 2arg - max ilość znaków do wczytania , 3arg- znak kończący
w naszym przypadku :
[code]cin.getline(tab,20,'n');[/code] //przed n jest slash
z tym getline to całkiem fajna sprawa bo jak określisz ile max znaków można wczytać to niemożliwe jest to że jak zdefiniujesz zbyt małą tablice to zaczniesz pisac po pamięci

0

Jak masz unixa to poszukaj w manie, jak masz helpa to zajzyj do opisu funkcji scanf, a jak i tego nie masz to:
http://www.die.net/doc/linux/man/man3/scanf.3.html
i looknij na conversions i "[". Jest tam wszystko napisane jak krowie na rowie. :-)

0

Jest tam wszystko napisane jak krowie na rowie. :-)

Wiem. Przeglądałem helpa wzdłuż i wszerz.
Kombinacje ze scanf i [A-Za-z ] też robiłem i też nie szło.
W końcu jednak znalazłem błąd. scanf nie ściągało znaku końca lini. Musiałem uzupełnić łańcuch o %c i w końcu gra.

0

jeśli używasz strumieni ( #include )

A skąd stumienie w C?? C != C++ !!

0

jeśli używasz strumieni ( #include )

A skąd stumienie w C?? C != C++ !!

a czy ja napisałem , że strumienie są w C ??? dodałem w nawiasie iostream , żeby było wiadomo o co chodzi . Teraz nikt nie programuje w czystym C tylko już w C++ , więc nie widze nic przeciwko stosowaniu strumieni które sa na pewno pewniejsze i nowsze od scanf'a i gets'a

0

Teraz nikt nie programuje w czystym C tylko już w C++ , więc nie widze nic przeciwko stosowaniu strumieni które sa na pewno pewniejsze i nowsze od scanf'a i gets'a

Tak się jednak składa, że muszę w ANSI C pisać :) Gdybym chciał coś sam sobie pisać, to na pewno nie pisałbym tego w C ani w C++ :-D
Ale akurat strumieni nie miałem zamiaru w ogóle sprawdzać, ale to, że napisałeś to może akurat się komuś przyda.

0

na pewno nie wspominałem o tych strumieniach bez powodu , lub po to żeby zwiększyc objętość mojego posta ( bo mam co w domu robić ;) ) . Po prostu wiele ludzi ma podobny problem , więc pomyślałem , że przeglądając ten post nauczyliby sie też stosować strumienie które są bardziej zalecane niż starsze funkcje .
Ale z tym :
<font color="green">Gdybym chciał coś sam sobie pisać, to na pewno nie pisałbym tego w C ani w C++ </span> to przegiąłeś :-8 [browar]

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