Zdravím,
vím že jde o triviální věc, ale jak se dá nejlépe v Céčku retězec (třeba ze vstupu) uložit do pole??
Díky moc.
Fórum › C / C++
HELP_řetězec
je ironii ze retezec je pole... pole znaku... zakoncene specialnim znakem '\0' tj ascii hodnotou 0x00
do pole jej tedy muzes ulozit treba kopirovanim z jineho retezce strcpy (ci strncpy)
nebo nacist nejakou funkci... ikdyz gets a podobne jsou dosti nebezpecne - nekontroluji jestli mas misto tam kam kopirujes
v C je to spíš:
char pole[100];
scanf("%99s", pole);
přižemž scanf() přečte znaky a ukončí načítání mezerou, takže když máme např. řetězec: "Ahoj, jak se mas?", tak se do pole uloží jen "Ahoj,", což většinou nechceme. Takže pokud chceme číst celou řádku, použijeme třeba fci char *gets(char *str), která čte až do znaku '\n'.
gets ZASADNE nepouzivat!! Na to uz dokonce upozornuji prekladace. Co kdyz je velikost nacitanyho retezce vetsi nez velikost toho pole?!! Lepsi je pouzit
char * fgets (char *s, int count, FILE *stream), ktera nacte maximalne count - 1 znaku a ulozi je do s. Zastavi se, kdyz narazi na konec radku, pricemz znak novyho radku ulozi do s a s ukonci znakem '\0'. Vrati s (vse OK) nebo NULL, pokud narazi na nejakou chybu nebo konec souboru.
Misto nejakyho souboru (FILE *stream) muzem pouzit stdin a pak bude cist ze standardiho vstupu..
char array [10];
fgets(array, 10, stdin); // nacte max 9 znaku a ulozi do array i s konovym znakem retezce
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze