C 如何计算字符串中的字符数(如果没有占用所有空间)

C 如何计算字符串中的字符数(如果没有占用所有空间),c,string,char,malloc,C,String,Char,Malloc,我有一段代码: char* input = malloc(sizeof(char)*100); scanf("%s", input); //let's say that the number of chars in "%s" is 5 如何计算输入的字符数(5)?我尝试使用sizeof(),但找不到解决方案 Edit(更好的解释):输入变量最多可以容纳100个字符,但假设我输入了终端“abcde”:那么它只容纳5个字符,其他95个字符不包含在内。我想计算“5”。您必须找到空终止符

我有一段代码:

char* input = malloc(sizeof(char)*100);
scanf("%s", input);        //let's say that the number of chars in "%s" is 5
如何计算输入的字符数(5)?我尝试使用sizeof(),但找不到解决方案


Edit(更好的解释):输入变量最多可以容纳100个字符,但假设我输入了终端“abcde”:那么它只容纳5个字符,其他95个字符不包含在内。我想计算“5”。

您必须找到空终止符

int i = 0;
while(input[i] != 0) {
    ++i;
}
//i marks the spot

但是是的,strlen()做得更好,因为它有一些改进/优化的搜索,因为它使用了word(16/32/64位)比较之类的东西。

可能是
strlen()函数。
谢谢strlen()的提及,我只能考虑分配的空间,所以我完全忘记了该函数。也许你可以把它作为一个答案发布,这样我就可以投票并将它标记为已接受?你可以通过
for
循环来完成,但是调用
strlen()
更容易写和读。或者
int
但是
size\t