strncpy () - warning przy próbie użycia
Ostatnio zmodyfikowano 2017-01-04 21:15
Lich555 Temat założony przez niniejszego użytkownika |
strncpy () - warning przy próbie użycia » 2017-01-03 22:53:16 Witam. Mam taki fragment kodu: class wizytowka { char * nazw, * imie; public: wizytowka( const char * n, const char * im ); wizytowka( const wizytowka & wzor ); ~wizytowka(); wizytowka & operator =( const wizytowka & wzor ); };
wizytowka::wizytowka( const char * n, const char * im ) { nazw = new char[ strlen( n ) + 1 ]; imie = new char[ strlen( im ) + 1 ]; strncpy( nazw, n, sizeof( nazw ) ); strncpy( imie, im, sizeof( imie ) ); cout << "Pracuje zwykly konstruktor\n"; }
Przy kompilacji wyrzuca mi takie warningi: warning: argument to 'sizeof' in 'char* strncpy(char*, const char*, size_t)' call is the same expression as the destination; did you mean to provide an explicit length ? Czemu wywala mi taki błąd? |
|
michal11 |
» 2017-01-03 22:57:19 przekaz do funkcji strlen(n) zamiast sizeof(nazw). |
|
pekfos |
» 2017-01-03 23:25:33 przekaz do funkcji strlen(n)+1 zamiast sizeof(nazw). |
|
j23 |
» 2017-01-04 10:23:16 Użyj po prostu strcpy. |
|
mokrowski |
» 2017-01-04 11:10:00 |
|
pekfos |
» 2017-01-04 11:27:55 Się czepiasz. Tu bufor jest specjalnie podstawiony pod tego stringa. Może użyć nawet i memcpy(). |
|
mokrowski |
» 2017-01-04 12:11:52 @pefkos, a niech robi co chce. Pyta to odpowiadam w ramach tego co twierdzę że jest rzetelne. A rzetelność != "czepianie się". |
|
j23 |
» 2017-01-04 15:11:59 Widzisz, mokrowski, jak byś był taki rzetelny, to zwróciłbyś uwagę na to, że nie sprawdza, czy parametry n i im nie są null. A dywagowanie o wyższości strncpy nad strcpy w tym konkretnym przypadku jest kompletnie zbędne (pekfos wyjaśnił dlaczego). |
|
« 1 » 2 |