我有一个参数定义,例如
extract(char open*, char close*)
extract(char *open, char *close)
并且为了找到我正在做的关闭的大小:
int len = 0;
while(close[len]) close++;
该参数来自用户键入的命令行。
之后如果我尝试打印close
它就不存在了;发生了什么事?
答案 0 :(得分:5)
您增加了指针而不是索引。您需要增加len
而不是close
,或者将原始指针值记录在新变量中。
int len = 0;
while (close[len] != '\0')
len++;
或:
char *original = close;
while (*close != '\0')
close++;
请注意,在第二种情况下,循环终止后长度为close - original
。
另外(正如其他人在two comments和answer中所指出的),最有效的解决方案是使用作业的标准函数{{1} },这通常由编译器高度优化:
strlen()
答案 1 :(得分:2)
Jonathan Leffler已经给出了一个很好的答案。
如果您不被禁止使用标准库函数,则可以使用:
int len = strlen(close);