Я не очень понимаю указатель символов и то, как они работают.
Программа собирается, но вылетает при запуске.
char *ab = NULL;
//ab = "abc123"; // works fine
sprintf(ab, "abc%d", 123); // this line seems to crash the program
Я не понимаю, как это может быть неправильно, когда sprintf принимает (char * str) в качестве первого аргумента.
Кто-нибудь может объяснить мне это?
sizeof(char)
гарантированно будет1
(не путать сCHAR_BITS
), поэтому в этом нет необходимости. Вы также должны упомянуть, что вам нужно выделить место для завершающего'\0'
. 15.06.2012