Консультация № 36951
07.03.2006, 13:27
0.00 руб.
0 6 6
Здравствуйте.
Как в Си строковой переменной присвоить пустое значение?
Аналог, как в Паскале например VSPData=‘‘;
а в Си
VSPData=‘‘; - выдает ошибку.

Обсуждение

Неизвестный
07.03.2006, 13:32
общий
это ответ
Здравствуйте, Александр_10289!

Один из способов:
VSPData[0]=0;
Неизвестный
07.03.2006, 13:36
общий
это ответ
Здравствуйте, Александр_10289!

VSPData=""
Но вообще-то все зависит от того, какой реализацией строк Вы пользуетесь.
Неизвестный
07.03.2006, 13:44
общий
это ответ
Здравствуйте, Александр_10289!
Никого не слушайте. Вариант VSPData[0]=0; даст присвоение первому символу 0, в то время как нужно обнулить строку. Так вот. Делается это функцией memset. Теперь давайте определимся что нужно - обнулить строку (т.е. стереть содержимое, но память останется выделенной) или удалить содержимое вместе с занимаемой областью?
В первом случае просто делаем memset(&VSPData, 0, sizeof(VSPData)); Можно еще VSPData = (char *) realloc(VSPData, 0); тут еще и размер блока данных урежется до нуля.

Если нужно еще и память освободить, тогда delete [] VSPData; VSPData = NULL;

Примерно так.
Неизвестный
07.03.2006, 17:29
общий
это ответ
Здравствуйте, Александр_10289!
В С нужно писать VSPData="";. В С строковая переменная (вернее значение) заключается в кавычки, а не в апострофы.
Неизвестный
07.03.2006, 17:57
общий
это ответ
Здравствуйте, Александр_10289!

VSPData="";

В Си в ходу двойные кавычки.
Неизвестный
08.03.2006, 08:14
общий
это ответ
Здравствуйте, Александр_10289!
Функция strcpy() для этого существует.

Приложение:
unsigned char str[10];// ...strcpy(str, "\n");
Форма ответа