如何使用'\ 0'标记char *向量的结尾以使其终止? 如果我有char * vector:
char* param[5];
我想到了
param[4] = '\0';
或
char c = '\0';
param[4] = &c;
但它们似乎都不起作用?
param是一个char-pointer向量,应该指向5个字符串(char-vectors)。
答案 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:你的问题无法回答,因为它是基于错误的假设。 : - )