Mam bardzo głupie wątpliwości. Kiedy uczyłem mojego znajomego programu C, zapytał mnie "dlaczego używamy printf, czy nie może to być printg lub po prostu wydrukować". Nie mogłem mu odpowiedzieć. Czy naprawdę istnieje powód, by wybrać opcję printf w programowaniu C?C - Dlaczego printf, a nie tylko drukowanie?
Odpowiedz
Numer f
w printf
oznacza sformatowany, służy do drukowania z sformatowanym wyjściem.
Dzięki ... Więc jeśli piszę tylko druk, czy zadziała ... – Sharan
@Sharan Chandran: Nie ma funkcja 'print' w bibliotece standardowej C. –
@SharanChandran Niesformatowana wersja nazywa się po prostu 'puts'. –
printf pozwala na formatowanie, a drukowanie nie. Ponadto, drukowanie nie istnieje w C. Nie wiem nawet, czym jest printg.
Nie wiem, co to 'print' jest albo ... –
tak, właśnie przypomniałem sobie, że to też nie istnieje :) dawno nie pisałem niczego w prostej linii c –
Jeśli się nie mylę, printf oznacza "Drukuj sformatowane dane na stdout".
Po prostu" print sformatowany "- 'stdout' jest po prostu brane za pewnik, o ile nie określisz inaczej w' fprintf'. –
Jak zauważyli inne, to końcowef
oznacza wyjście (sformatowany albo w formacie wejście funkcji w rodzinie scanf
).
Dodam jednak, że rozróżnienie ma znaczenie, ponieważ dla dzwoniących ważne jest, aby wiedzieć, że łańcuch ma semantykę określającą format. Na przykład, nie rób tego:
char* s = get_some_user_input();
printf(s); // WRONG. Instead use: printf("%s", s) or fputs(stdout, s)
Jeśli s
dzieje zawierać %
znaków, drukowanie bezpośrednio z printf
może spowodować, że dostęp do nieistniejących argumentów, co prowadzi do nieokreślonego zachowania (i to jest przyczyna dla niektórych luki w zabezpieczeniach). Miej na uwadze tę konwencję nazewnictwa, jeśli kiedykolwiek zdefiniujesz własne funkcje wariacyjne na poziomie printf
.
- 1. Specyfikator formatu% a dla printf() w C
- 2. dlaczego ten program c nie wydrukuje pierwszej instrukcji printf?
- 3. Drukowanie tabeli partycji - program C
- 4. Printf bufor o wartości podanej w C
- 5. C usuń wyjście printf
- 6. printf zmienna w C
- 7. Drukowanie Char *
- 8. Drukowanie adresów adresów w C [dwa pytania]
- 9. Dlaczego `++ a ++` nie kompiluje się w C++, ale `(++ a) ++` ma?
- 10. Drukowanie ciągów UTF-8 z literami printf - szeroki kontra wielobajtowy
- 11. C - Drukowanie z pływaka wartości
- 12. Drukowanie w C++ niezwykle szybkim niż C
- 13. Dlaczego funkcja printf() jest zanieczyszczona?
- 14. Czy istnieje sposób na drukowanie w formatach printf w Haskell?
- 15. Drukowanie NSString
- 16. Drukowanie tablicy 2D w C
- 17. Dlaczego nie piszemy int x = printf ("tekst"); ponieważ instrukcja printf() zwraca za każdym razem wartość całkowitą?
- 18. Dlaczego mogę wyświetlić tylko źródło Storyboard, a nie Interface Builder?
- 19. Dlaczego trasa rails_admin pracować tylko w link_to a nie 'renderowanie'
- 20. Tajemniczy printf argumentem podczas demontażu c programu
- 21. Drukowanie kolorowego tekstu na konsolę w C++
- 22. Jak działa funkcja printf w C?
- 23. Drukowanie wartości w tablicy wskaźnika w C
- 24. Dlaczego printf działa z zarządzanymi ciągami?
- 25. Drukowanie całej zawartości WebView w kakao, nie tylko wyświetlana
- 26. C liczba zespolona i printf
- 27. Dlaczego nie jest błędem zwiększanie tablicy "a" w poniższej funkcji?
- 28. BASH - Tylko drukowanie najgłębszego katalogu w ścieżce
- 29. Tylko pętla, a 33 przecieków
- 30. Dlaczego drukowanie wskaźnika drukuje to samo, co drukowanie wskaźnika dereferencji?
Po prostu zacząłem się uczyć programowania C ... Przepraszam, jeśli to pytanie jest głupie ... – Sharan
Nie ma czegoś takiego jak głupie pytanie. Zaczekaj, tak, jest. Ale ten nie jest tak naprawdę przykładem jednego. –
Co jest niejasne lub dwuznaczne na temat tego pytania? Jak to nie jest rozsądnie odpowiedzialne? Na pewno są rozsądne odpowiedzi. (Wydaje się też zabawne, że K-ballo był jednym z ludzi, którzy zamknęli to pomimo zaakceptowanej odpowiedzi.) – jamesdlin