Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 12:17   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Легкий вопрос

текст это массив char размером m
считаю количество букв.

переписываю в другой массив, новый массив должен быть размером m или m+1, дабы было место под символ /0, на лекция говорили что си сам заботиться о том чтобы по умолчанию дописать этот символ. вот только сам ли он место под него найдет?
pinkiller вне форума Ответить с цитированием
Старый 03.11.2011, 13:08   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

"Сам позаботится" - это в том смысле, что когда Вы пишете в коде литерал "Some string", С позаботится превратить его в "Some string\0", на этапе компиляции.
На этапе выполнения C не заботится ни о чём. В массиве char[m] можно сохранить m переменных размера char. Примером набора m переменных размера char является текстовая строка в m-1 символ с завершающим нуль-терминатором; другим примером - набор из m чисел от 0 до 255 каждое. В каком смысле Вы этот массив собрались использовать, компилятор не знает, и автоматически ничего не дописывает.
Abstraction вне форума Ответить с цитированием
Старый 03.11.2011, 13:09   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

strlen возвращает длину без нуль символа. Новый массив должен быть на один больше. И при strcpy нуль символ не копируется, надо использовать strncpy.
An1ka вне форума Ответить с цитированием
Старый 03.11.2011, 13:23   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
И при strcpy нуль символ не копируется, надо использовать strncpy.
Неправда Ваша, однако.
Цитата:
Сообщение от MSDN
The strcpy function copies strSource, including the terminating null character, to the location specified by strDestination. The behavior of strcpy is undefined if the source and destination strings overlap.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос в php мониторенге легкий. makar3000 PHP 3 05.03.2011 22:35
Пожалуйста помогите решить легкий вопрос по C++ Forward777 Помощь студентам 2 18.11.2009 16:38
Ответе бысто на легкий вопрос... t13sto Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2008 21:39
очень легкий вопрос ♠STO♠ Общие вопросы Delphi 5 15.07.2007 00:14