Anonymní profil Robo – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Robo – Programujte.comAnonymní profil Robo – Programujte.com

 

Příspěvky odeslané z IP adresy 188.112.118.–

Robo
C / C++ › delete []
5. 7. 2013   #178820

#5 KIIV
takže cin mi načíta reťazec a ostatné voľné miesta mi vyplní \0. Lenže strncpy číta len po \0 (alebo po rozsah) nulový znak tam už nevloží. Vloží ho automaticky, keď dosiahne požadovaný limit. 

Dá sa to ľahko obísť, že namiesto funkcií s n použijem funkcie bez n.
Ale to by mi moc nepomohlo, takže treba namiesto 20, dať presnú dĺžku a v prípade strncpy + 1

ps = new char [strlen(name) + strlen(name2) + 3];
strncpy(ps, name, strlen(name) + 1);
strcat(ps, ", ");
strncat(ps, name2, strlen(name2));
Robo
C / C++ › delete []
4. 7. 2013   #178797

Neviete niekto, prečo mi program stále spadne keď príde pri delete ?
To + 3 je tam kvôli čiarky, medzere a nulovému znaku

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
	char name[20];
	char name2[20];
	char *ps;

	cout << "Zadajte vase meno: ";
	cin >> name;
	cout << "Zadajte vase priezvisko: ";
	cin >> name2;

	ps = new char [strlen(name) + strlen(name2) + 3];
	strncpy(ps, name, 20);
	strcat(ps, ", ");
	strncat(ps, name2, 20);

	cout << ps << endl;
	delete [] ps;

	system("PAUSE");
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý