39014

39014



137


KONWERSJE

ffinclude <stdio.h> int nain (int argc, char •argv[]) {

printf C7.s\ argv[l] ) ;

>

lub:

ffinclude <stdio.h> int main (int argc, char *argv[]> {

fputs (argv[l], stdout);

>

Źródło problemu leży w konstrukcji funkcji printf. Przyjmuje ona bowiem za pierwszy parametr łańcuch, który następnie przetwarza. Jeśli w pierwszym parametrze wstawimy jakąś zmienną, to funkcja printf pot nikluje ją jako ciąg znaków razem ze znakami formatującymi. Zatem ważne, aby wcześnie wyrobić sobie nawyk stosowania funkcji printf z co najmniej dwoma parametrami. nawc't w przypadku wyświetlenia samego tekstu.

Konwersje

Czasami zdarza się. że łańcuch można interpretować nie tylko jako ciąg znaków, lecz np. jako liczbę. Jednak, aby dało się taką liczlię przetworzyć musimy skopiować' ją do pewnej zmiennej. Aby ułatwić programistom te»go typu zamiany powstał zestaw funkcji bibliotecznych. Należą do nich:

•    atol, strtol zamienia łańcuch na liczbę całkowitą typn long

•    atoi zamienia łańcuch na liczbę całkowitą typu int

•    atoli, strtoll zamienia łańcuch na liczlię całkowitą typu long long (G4 bity): dodatkowo istnieje przestarzała funkcja atocj liędąca rozszerzeniem GNU.

•    atof. strtod przekształca łańcuch na liczbę typu double

Ogólnie rzecz ujmując funkcje z serii ato* nie (rozwalają na wykrycie błędów przy konwersji i dlatego, gdy jest to potrzebne, należy stosować funkcje strto*.

Czasami przydaje się też konwersja w dnigą stronę, tzn. z liczby na łańcuch. Do tego celu może posłużyć funkcja sprintf lub snprintf. sprintf jest liardzo podobna do printf. tyk*, że wyniki jej prac zwracane są do pewnego łańcucha, a nie wyświetlane np. na ekranie monitora. Należy jednak uważać przy jej użyciu (patrz Bezpieczeństwo kodu a łańcuchy), snprintf (zdefinkm ana w nowszym standardzie) dodatkowo przyjmuje jako argument wielkość bufora docelowego.

Operacje na znakach

Warto też powiedzieć w tym miejscu o operacjach na samych znakach. Spójrzmy na poniższy program:

ffinclude <stdio.h> ffinclude <ctype.h> ffinclude <string.h>

int mainO

{

int znak;



Wyszukiwarka

Podobne podstrony:
17 p01 #include <stdio.h> #include <conio.c> #include <iostream.h> int main(int ar
Nasz pierwszy program #include <stdio.h> #include <stdlib .h> int main(int argc , char *
02 p01 #include <stdio.h> #include <conio.c> #include <iostream.h> int rnain(int a
03 p01 #include <stdio.h> #include <conio.c> #include <iostream.h> int main(i
04 p01 #include <stdio.h> #include <conio.c> #include <string> int rnain(int argc,
Prędkość i czas spadania - II Funkcja main int main( int argc, char *argv[]) I float
098 TIF int main(int argc, char* argv[]){ KlasaNaucz t1; KlasaPrac s1; cout « tl.nldNaucz « endl; co

więcej podobnych podstron