Kurs programowania w C cz. 120

Nasza ocena:

3
Pobrań: 7
Wyświetleń: 595
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C  cz. 120 - strona 1

Fragment notatki:

KONWERSJE 137 #include  int main (int argc, char *argv[]) { printf ("%s", argv[1]); } lub: #include  int main (int argc, char *argv[]) { fputs (argv[1], 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 potraktuje 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, nawet 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ą liczbę przetworzyć musimy skopiować ją do pewnej zmiennej. Aby ułatwić programistom tego typu zamiany powstał zestaw funkcji bibliotecz- nych. Należą do nich: •  atol,  strtol  — zamienia łańcuch na liczbę całkowitą typu long •  atoi  — zamienia łańcuch na liczbę całkowitą typu int •  atoll,  strtoll  — zamienia łańcuch na liczbę całkowitą typu long long (64 bity); dodat- kowo istnieje przestarzała funkcja  atoq  będąca rozszerzeniem GNU, •  atof,  strtod  — przekształca łańcuch na liczbę typu double Ogólnie rzecz ujmując funkcje z serii ato* nie pozwalają na wykrycie błędów przy konwersji i dlatego, gdy jest to potrzebne, należy stosować funkcje strto*. Czasami przydaje się też konwersja w drugą stronę, tzn. z liczby na łańcuch. Do tego celu może posłużyć funkcja  sprintf  lub  snprintf.  sprintf jest bardzo podobna do printf, tyle, ż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 (zdefiniowana 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 po- niższy program: #include  #include  #include  int main() { int znak;

(…)

… programistom tego typu zamiany powstał zestaw funkcji bibliotecznych. Należą do nich:
• atol, strtol — zamienia łańcuch na liczbę całkowitą typu long
• atoi — zamienia łańcuch na liczbę całkowitą typu int
• atoll, strtoll — zamienia łańcuch na liczbę całkowitą typu long long (64 bity); dodatkowo istnieje przestarzała funkcja atoq będąca rozszerzeniem GNU,
• atof, strtod — przekształca łańcuch na liczbę typu…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz