działa w C, nie działa w C++

kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

działa w C, nie działa w C++

Post autor: kawafis44 »

pogrubiłem linię, z którą mam problem

#include
#include

void dump(int *a,int w,int h)
{
int i,g;
for (i=0;i printf("%4d",a[g+w*i]); //g-nasza kolumna od zera do szerokosci
printf("\n");
}
}

main()
{
int k[6][6];

/*wypelnia tablice*/
int x,y,z,zz;
z=0;
for (x=0;x[ Dodano: 17 Listopada 2007, 13:15 ]
line 10, message: implicit declaraction of function 'int printf(...)'
program: Dev-C++ 4
Awatar użytkownika
Undre
Użytkownik
Użytkownik
Posty: 1430
Rejestracja: 15 lis 2004, o 02:05
Płeć: Mężczyzna
Lokalizacja:
Podziękował: 3 razy
Pomógł: 92 razy

działa w C, nie działa w C++

Post autor: Undre »

nie działa, ponieważ printf jest zadeklarowany w stdio, a nie w iostream

w C++ do obsługi wejścia / wyjścia stosuje się raczej przeznaczone do tego funkcje cin ( od input ) oraz cout ( od output ). Możesz na upartego podpiąć bibliotekę cstdio, wtedy można skorzystać z funkcji C, czy jednak ma to sens ? Mniemam, że gdyby printf czy scanf były super, nie zastępowano by ich nowymi rozwiązaniami.
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

działa w C, nie działa w C++

Post autor: MGT »

Undre pisze:Mniemam, że gdyby printf czy scanf były super, nie zastępowano by ich nowymi rozwiązaniami.
O tym możnaby i książkę napisać. De facto z cin i cout łatwiej się krozysta, w scanf i pitnrf masz większą kontrolę nad formatowaniem (moim zdaniem), a ponadto te dwie funkcje ze standardowego C są szybsze, co ma znaczenie dla obsługi dużych wejść/wyjść. Choć są także szybsze funkcje do czytania wejścia
Xfly
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 13 mar 2006, o 20:44
Płeć: Mężczyzna
Lokalizacja: Nowogard
Podziękował: 33 razy
Pomógł: 10 razy

działa w C, nie działa w C++

Post autor: Xfly »

Hmm ale jak się korzysta z jednej biblioteki to lepiej nie korzystać z tej drugiej bo czasami mogą powstać problemy z wydajnością. Albo albo . Samo korzysta w pewien sposób z fprint itp.
kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

działa w C, nie działa w C++

Post autor: kawafis44 »

zasadniczo mam na studiach kurs C, więc na razie te problemy mnie nie dotyczą i po prostu zastosuję bibliotekę stdio
dzięki za pomoc, pozdrawiam
Awatar użytkownika
Undre
Użytkownik
Użytkownik
Posty: 1430
Rejestracja: 15 lis 2004, o 02:05
Płeć: Mężczyzna
Lokalizacja:
Podziękował: 3 razy
Pomógł: 92 razy

działa w C, nie działa w C++

Post autor: Undre »

MGT pisze:ponadto te dwie funkcje ze standardowego C są szybsze, co ma znaczenie dla obsługi dużych wejść/wyjść
Zdaje sobie z tego sprawę, jednak z drugiej strony rozwój hardware pozwala nam też trochę zaniedbywać kwestie szybkości czy optymalności kodu na rzecz komfortu piszącego. Zresztą podczas kilku semestrów studiów widziałem już wiele - w tym także programy, w których cout/cin nie dawały rady, a zastąpienie ich printf/scanf rozwiązywało problem, widziałem także programy, gdzie dokładnie opaczne działanie mistycznie powodowało sukces w kompilacji. Nie wgłębiałem się jakoś niesamowicie w to wszystko, może gdzieniegdzie były to pewnego rodzaju błędy, gdzieniegdzie może brak znajomości zachowań specyficznych już dla samego kompilatora ... jednego tak na oko się wszak nauczyłem - warto umieć korzystać zarówno z stdio jak i strumieni, bo w razie gdy jedno z nich zawiedzie, zawsze ma się alternatywę.
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

działa w C, nie działa w C++

Post autor: MGT »

Undre pisze:jednego tak na oko się wszak nauczyłem - warto umieć korzystać zarówno z stdio jak i strumieni, bo w razie gdy jedno z nich zawiedzie, zawsze ma się alternatywę.
Im więcej wiesz, tym lepiej. (choć zwykłem mówić, że im więcej wiesz, tym bardziej zdajesz sobie sprawę z tego, czego nie wiesz )
Często lepszą alternatywę. Takie przeskakiwanie (między c/c++) może się przydać np. przy alokacji pamięci, gdzie funkcje zaimplmentowane w stdlib.h są mniej bezpieczne od new i delete

Zainteresowanym działaniem I/O polecam poczytać np. o wejściu buforowanym
ODPOWIEDZ