查找char参数的大小

时间:2014-04-11 03:56:34

标签: c

我有一个参数定义,例如

extract(char open*, char close*)

extract(char *open, char *close)

并且为了找到我正在做的关闭的大小:

int len = 0;
while(close[len]) close++;

该参数来自用户键入的命令行。

之后如果我尝试打印close它就不存在了;发生了什么事?

2 个答案:

答案 0 :(得分:5)

您增加了指针而不是索引。您需要增加len而不是close,或者将原始指针值记录在新变量中。

int len = 0;
while (close[len] != '\0')
    len++;

或:

char *original = close;
while (*close != '\0')
    close++;

请注意,在第二种情况下,循环终止后长度为close - original


另外(正如其他人在two commentsanswer中所指出的),最有效的解决方案是使用作业的标准函数{{1} },这通常由编译器高度优化:

strlen()

答案 1 :(得分:2)

Jonathan Leffler已经给出了一个很好的答案。

如果您不被禁止使用标准库函数,则可以使用:

int len = strlen(close);