在c中结束char * vector

时间:2010-10-08 08:46:52

标签: c

如何使用'\ 0'标记char *向量的结尾以使其终止? 如果我有char * vector:

 char* param[5];

我想到了

 param[4] = '\0';

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

但它们似乎都不起作用?

param是一个char-pointer向量,应该指向5个字符串(char-vectors)。

5 个答案:

答案 0 :(得分:3)

好的,你试图结束一个字符串向量,类似于传递给main argv的字符串。在这种情况下,您只需要指定一个空指针:

param[4] = 0;

答案 1 :(得分:1)

如果你真的有一个char*数组,你可以这样做:

 param[4] = "";

(只要在param[4]超出范围时您不需要c有效,您的第二种方法才有效。)

更好的哨兵值通常是空指针,但是:

 param[4] = NULL;

答案 2 :(得分:0)

char*向量是指向字符的指针向量。你可能想要一个char矢量。在这种情况下,你可以写:

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

通过这种方式,矢量初始化为所有'\0'个字符。

如果你真的想要一个char指针数组,你可以做类似的事情:

char* vect[5] = { NULL };

所有指向字符串的指针都将使用NULL初始化。

答案 3 :(得分:0)

我可能会写下面的内容:

#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指针)

答案 4 :(得分:0)

char* param[5];

vector不能'null terminate' - 它是char指针的向量。你只能null终止字符数组(通过放置一个'\0'来终止char数组。

因此,我猜你问题的正确答案是mu:你的问题无法回答,因为它是基于错误的假设。 : - )