• C实现string字符串


    在C中实现string字符串,使用typedef将string定义为char *。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef char* string;
    
    string get_string(string);
    
    int main(void)
    {
        string name = get_string("What's your name?
    ");
        printf("Hello, %s!
    ", name);
        printf("strlen: %d
    ", strlen(name));
    
        return 0;
    }
    
    string get_string(string msg)
    {
        int len = 8;
        string str = (string)malloc(sizeof(char)*len);  // 动态分配一个长度为len的字符串指针
        char *ptr = str;  // 将ptr指针指向str
        char ch;
        int i = 0;
    
        printf("%s", msg);
        while ((ch = getchar()) != '
    ')  // 循环接收字节,直到用户输入回车
        {
            *ptr++ = ch;  // 将ch赋值给*ptr并且ptr指向下一个地址
            i++;
            if (i == len)  // 如果长度已满
            {
                string tmp = str;  // tmp指向str
                len *= 2;  // 长度翻倍
                str = (string)malloc(sizeof(char)*len);  // str重新指向一个动态分配长度翻倍的字符串指针
                strcpy(str, tmp);  // 将tmp中的字符都复制给str    
                ptr = str + i;  // ptr现在指向新的str中的第i个字符地址
                free(tmp);  // 释放内存空间 
                tmp = NULL;
            }
        }
        *ptr = '';  // 字符串指针最后一个字符必须为''
    
        return str;
    }
  • 相关阅读:
    关键字static
    关键字const有什么含义?
    关于目标
    B/B+树的初步理解(一)
    优先队列(priority_queue)
    哨兵的作用
    数学笑话集(一)

    排序算法小结(一)
    KMP算法
  • 原文地址:https://www.cnblogs.com/noonjuan/p/12054464.html
Copyright © 2020-2023  润新知