0
我是新的C编程,我只是了解指针和字符串,我知道当处理指针和字符串时,我们必须为我们要使用动态内存分配声明的字符串分配内存。我想计算字符串的长度,而不使用c函数库strlen()
。但为什么这下面的代码并没有给出字符串的实际长度,而是当我将*string
更改为string[50]
这意味着我使用数组方式来计算,代码工作正常,并给我字符串的真实长度。内存分配和动态内存分配
此代码:
#include <stdio.h>
#include <stdlib.h>
int len(char *string);
int main(void){
char *string;
string=(char *)malloc(len(string+1));
puts("enter string:");
fgets(string,sizeof(string),stdin);
printf("length=%d\n",len(string));
return 0;
}
int len(char *string){
int len;
while(*string!='\0'){
string++;
len++;
}
return len-1;
}
这是当我运行代码:
enter string:
programming
length=2
因为你永远不会初始化'len'。编译(温和)优化和*所有*合理的警告标志(在GCC中,'-O-Wall',可能多一点)。它应该告诉你有关上面的错误。 – vonbrand