• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bibliotek stdlib.h i funkcje printf(), scanf()

Object Storage Arubacloud
+5 głosów
1,103 wizyt
pytanie zadane 15 kwietnia 2015 w C i C++ przez RedRevenge Obywatel (1,230 p.)
Witam serdecznie,

Jestem studentem automatyki i robotyki. Ostatnio z programowania w C miałem małe kolokwium. Jako, że wcześniej już trochę programowałem, poszedłem na nie trochę bez przygotowania. Biblioteki "stdio.h" i "stdlib.h" używałem bardzo rzadko (ponieważ zwykle programowałem w C++), stąd trochę bezmyślnie dołączyłem bibliotekę "stdlib.h", a później używałem funkcji printf(), oraz scanf().

Okazało się, że używając biblioteki "stdlib.h" nie mogę użyć printfa i scanfa, bo ich tam nie ma i program po prostu nie zadziała. Straciłem na tym trochę punktów ;/ Dodam, że na kolokwiach piszemy programy na kartce, stąd nie ma możliwości w czasie trwania kolokwium sprawdzenia na komputerze, czy program działa czy nie.

Jednak pamięc mi podpowiadała, że kiedyś tak robiłem i działało. Sprawdziłem i rzeczywiście, wszystko działa bez zarzutów (sprawdzałem w Code Blocks, oraz na ideone.com).

Jak to jest z tymi funkcjami? Dlaczego działa na "stdlib,h", skoro podobno ich tam nie ma? Czy straciłem punkty słusznie?

Pozdrawiam ;)

7 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2015 przez Mirosław Zelent Nałogowiec (34,780 p.)
A w jakiej wersji CodeBlocksa program "widzi" printfa bez inkludowania stdio.h?
komentarz 15 kwietnia 2015 przez RedRevenge Obywatel (1,230 p.)
Wersja 13.12
0 głosów
odpowiedź 15 kwietnia 2015 przez Bondrusiek Maniak (61,370 p.)
edycja 15 kwietnia 2015 przez Bondrusiek

Mi niestety funkcje printf() oraz scanf() nie działają z włączona tylko biblioteką <stdlib.h>. Jak chcerz być pewien co działa w danej bibliotece to polecem przeczytanie dokumentacji tam wszystko jest wyjaśnione:

Stdlib :

http://www.cplusplus.com/reference/cstdlib/

Stdio

http://www.cplusplus.com/reference/cstdio/

Edit :

Sprawdziłem w Qt Creator, nie da się wywołać funkcje printf() z biblioteką <stdlib>.

Natomiast w Code::Blocks 13.12 program się kompiluje z jednym ostrzerzeniem:

warning: incompatible imlicit declaration of built-in function 'printf'

Mimo wszystko lepiej deklarować bibliotekę <stdio.h> do printf().

0 głosów
odpowiedź 15 kwietnia 2015 przez Mateusz Dalgiewicz Mądrala (5,270 p.)
Dobre pytanie, ale mi również funkcje nie działają po załączeniu tylko stdlib.h. Może twój  kompilator jakoś niejawnie po załączeniu tego nagłówka załącza również inne?
0 głosów
odpowiedź 15 kwietnia 2015 przez gabon95 Nowicjusz (160 p.)
Niektóre kompilatory mają podstawowe biblioteki od razu zawarte, printfy i scanfy Ci działały chociaż teoretycznie nie powinny.
0 głosów
odpowiedź 15 kwietnia 2015 przez hjester Użytkownik (840 p.)
To, że działa nie znaczy, że działa poprawnie, sprawdź informacje kompilatora. Swoją drogą u mnie ani gcc ani clang tego nie kompilują.

Twój program działa dlatego, że za kulisami linker dołącza jeszcze libc(biblioteka standardowa C) do twojego programu.

Zzasadniczo polegasz na niezdefiniowanym zachowaniu a to zła praktyka.
0 głosów
odpowiedź 15 kwietnia 2015 przez Dragonet.17 Pasjonat (19,630 p.)
Pisanie programów na kartce wg mnie mija się z celem, a to z tego względu,że np w Code Bloksie już na początku tworzenia nowego projektu i wyborze języka, mamy ustawione odpowiednie bibliteki itd.
Z tego też powodu, nawet nie zwraca się uwagi na to jakie dokładnie są bibliteki.
Mówię tutaj o Twoim przypadku - miałem dokładnie to samo.
Zrobiłem bardzo dużo "programików" w C++,a kolosa miałem  z C - na szczęście pisałem na kompie, więc nie musiałem pamiętać takich rzeczy.
Jak już powiedziałem, są to rzeczy których nie trzeba wykuwać na pamięć, tak jak np. wszystkich tagów html itd. Potrzebujesz czegoś - więc sprawdzasz na necie i jest.

Wiesz jak to jest na uczelni, z czegoś po prostu trzeba pisać kolokwia i punkty też za coś trzeba zdobywać jak i tracić.
komentarz 15 kwietnia 2015 przez Dragonet.17 Pasjonat (19,630 p.)
Aż z ciekawości sprawdziłem.
U mnie w Code Bloks przy utworzeniu nowego projektu, z automatu pojawiaja sie bibliteki.
#include <stdio.h>
#include <stdlib.h>

 

Innych nie ma. Funkcje dzialaja prawidlowo.

Nie wiem w czym problem, jakie mialy byc te inne biblioteki ?
0 głosów
odpowiedź 15 kwietnia 2015 przez Wirus Stary wyjadacz (14,000 p.)
Raczej powinno być stdio.h ponieważ jak mam sobie kojażyć biblioteczki np: wejścia i wyjścia to io(wejście wyjście) w tym wypadku stdio.h najłatwiej zapamiętać.

Podobne pytania

0 głosów
1 odpowiedź 315 wizyt
pytanie zadane 3 kwietnia 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
0 głosów
0 odpowiedzi 403 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez Przemek49 Obywatel (1,260 p.)
0 głosów
3 odpowiedzi 1,156 wizyt
pytanie zadane 8 listopada 2016 w C i C++ przez Piotr Ponikwia Początkujący (330 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...