Конечный символ * вектор в с - PullRequest
1 голос
/ 08 октября 2010

Как пометить конец вектора символа * символом \ 0, чтобы завершить его нулем?Если у меня есть char * vector:

 char* param[5];

Я думал о

 param[4] = '\0';

или

char c = '\0';
param[4] = &c;

, но ни один из них, похоже, не работает?

param - это вектор указателя на символ, который должен указывать на 5 строк (char-векторы).

Ответы [ 5 ]

3 голосов
/ 08 октября 2010

Хорошо, вы пытаетесь завершить вектор строк, что-то похожее на то, что передается main как argv.В этом случае вам просто нужно присвоить нулевой указатель:

param[4] = 0;
1 голос
/ 08 октября 2010

Если у вас действительно есть массив char*, вы можете сделать:

 param[4] = "";

(Ваш второй подход на самом деле должен работать до тех пор, пока вам не нужно, чтобы param[4] был действительным, когда c выходит из области видимости.)

Лучшим значением часового механизма обычно будет нулевой указатель, однако:

 param[4] = NULL;
0 голосов
/ 08 октября 2010

Ваш

char* param[5];

вектор не может быть завершен нулем - это вектор указателей на символы. Вы можете только завершить массивы символов null (поставив '\0' там, где вы хотите завершить массив char.

Следовательно, я думаю, правильный ответ на ваш вопрос будет mu : На ваш вопрос невозможно ответить, потому что он основан на неверных предположениях. : -)

0 голосов
/ 08 октября 2010

Я бы, наверное, написал что-то вроде ниже:

#include <stdio.h>

int main(){

    char* param[5] = {"1", "2", "3", "4", NULL};

    int i = 0;
    for (i = 0; param[i] ; i++){
       printf("%s\n", param[i]);
    }

}

Вместо NULL я мог бы использовать 0 или '\ 0', поскольку все они в конце одинаковы (числовое значение 0), но я считаю, что использование макроса захвата NULL лучше всего.

Вы также можете написать param[4] = NULL;, если это сделано после инициализации, и вы param[4] = '\0'; должны были бы работать (но больше похоже на запутывание, поскольку вы вообще не хотите использовать символ, но указатель NULL)

0 голосов
/ 08 октября 2010

A char* vector - это вектор указателя на символы. Вы, вероятно, хотите вектор char. В этом случае вы можете написать:

char vect[5] = { '\0' };

Таким образом, вектор инициализируется со всеми '\0' символами.

Если вам действительно нужен массив указателей на символы, вы можете сделать это следующим образом:

char* vect[5] = { NULL };

Все указатели на строку будут инициализированы с NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...