(C语言)自己的srtlen(输出字符串长度)函数(指针数组解法)

#include 
//动态分配函数头文件
#include 
int strlen_my(char *str,int *i){
    //定义新数组
    char* new_str=NULL;
    //重新分配str数组空间大小
    new_str=(char*)realloc(str,(*i)*sizeof(char));
    if(new_str==NULL){
        printf("分配失败\n");
        return 1;
    }
    int len=0;
    //判断数组长度
    do{
        if(str[len]=='\0'){
            break;
        }
        len++;
    }while(1);
    //释放数组空间
    free(str);
    free(new_str);
    return len;
}
int main(){
    //初定义数组
    char *str=NULL;
    //临时数组空间
    str=(char*)malloc(100*sizeof(char));
    if(str==NULL){
        printf("空间分配失败\n");
        return 1;
    }
    printf("请输入你的字符串(输入回车结束):\n");
    int i=0;
    char ch;
    //获取输入字符串
    while((ch=getchar()!='\n') && ch!=EOF){
        if (i >= 99) {  // 防止溢出
            printf("输入过长,已截断!\n");
            break;
        }
        str[i++]=ch;
    }
    str[i]='\0';
    int x=strlen_my(str,&i);
    if(x!=1){
        printf("该字符串长度为%d",x);
    }
    return 0;
}

这样的话,直接调用strlen_my函数就能判断字符串长度了

注意的是获取字符串长度,用的是getchar()函数,判断是否为‘\n’也就是,回车结束

最后在后边加str[i]='\0',来作为结束条件

判断结束的时候,看str[len]=='\0',如果成立,就结束

下面是部分运行结果:

请输入你的字符串(输入回车结束):
asdasdasdasdasd
该字符串长度为15
请按任意键继续. . .

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

你可能感兴趣的:(C语言(指针),c语言,c++,算法,开发语言,数据结构)