非空终止char *数组的长度

时间:2015-07-04 03:27:02

标签: c

以下方法var i = 1; $("#add").click(function () { $("#tr_clone").clone().find("input,select").each(function () { $(this).val('').attr("id", function (_, id) { return id + i }); }).end().appendTo("table"); i++; }); $("#expense_type_" + i).change(function () { alert($(this).val()); }); 给了我一个无限循环(无限“hello”语句)。要查找非空终止字符串的长度,我需要注意什么,因为没有'\ 0'?。

slength

这种方法似乎有效,但我觉得有太多的检查需要考虑。有更简单的方法吗?

int slength(const char *s) {
 printf("hello");
 int i = 0;
 while (s != NULL) {
    i++;
    s++;
    printf("hello");
 }
 return i;
}

2 个答案:

答案 0 :(得分:2)

由于您没有使用标准C字符串,而是想要创建自己的字符串类型,因此不能使用常用的C方法来遍历字符串。我建议你制作一个像

这样的数据结构
struct string {
    const char *text;
    int length;
};

跟踪字符串的长度。使用附加长度信息循环。您可能必须创建许多处理字符串的C标准库函数的自己版本,转换和工厂函数将非常有用。

以下是C中用于跟踪长度的字符串实现的几个示例:

Paul Hsieh的

bstring

来自D. R. Hanson的C 接口和实现的

Text

否则,只使用以null结尾的字符串,因为这是C中的默认字符串。例如,字符串文字以空字符结尾。

答案 1 :(得分:0)

while(s!=NULL)替换为while(*s!=NULL)