powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / непонятки с strncpy
6 сообщений из 6, страница 1 из 1
непонятки с strncpy
    #38955418
neznayko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        const char * str = "My second long string";
		
	int sz = 12;
	char *strcp2 = malloc(sz + 1);
	strncpy(strcp2, str, sz);
	//strcp2[sz] = '\0';

	printf("str copy 10 simbols is %s\n", strcp2);

	free(strcp2);



1) Если выполнять прогу без закомментированной строки,
то printf выводит :
My second lo - и дальше абракадабру
почему?
а если раскомментировать
Код: plaintext
1.
strcp2[sz] = '\0';


то все нормально
почему глючит без явного присваивания '\0'?
так и должно быть или я что то делаю не правильно?

2)для переменной str нужно явно освобождать память?
...
Рейтинг: 0 / 0
непонятки с strncpy
    #38955425
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznaykoпочему?
Потому что, упёршись в предел, strncpy не вставляет в результат терминирующий нуль. Ты
ведь помнишь значение слов "null-terminated strings"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
непонятки с strncpy
    #38957292
neznayko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
const char * str = "My second long string";


для переменной str нужно явно освобождать память?
...
Рейтинг: 0 / 0
непонятки с strncpy
    #38957499
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznayko,

нет, эту память никто не выделял.
...
Рейтинг: 0 / 0
непонятки с strncpy
    #38957607
flamevlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
malloc, в отличие от calloc, не заполняет выделенную память нулями. Поэтому в конце strcp2 не обязательно будет нулевой символ.
Замени malloc(sz + 1) на calloc(sz + 1, 1)
...
Рейтинг: 0 / 0
непонятки с strncpy
    #38957622
flamevlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. strncpy не добавил нуль к строке, т.к. было достигнуто ограничение по количеству копируемых символов(аргумент sz). См. описание strncpy http://cppstudio.com/post/690/
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / непонятки с strncpy
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]