题解 | 牛牛学说话之-字符串

牛牛学说话之-字符串

https://www.nowcoder.com/practice/fa8bde2f612749c9813262a146488c9d

#include <stdio.h>
#include <stdlib.h>

int main() {
    int capacity = 10;  // 初始缓冲区容量
    int len = 0;        // 当前字符串长度
    char *s = (char *)malloc(capacity * sizeof(char)); // 分配初始内存
    
    if (s == NULL) {
        fprintf(stderr, "内存分配失败\n");
        return 1;
    }

    int c;
    // 逐个字符读取输入,直到换行符或EOF
    while ((c = getchar()) != '\n' && c != EOF) {
        // 检查是否需要扩展内存
        if (len + 1 >= capacity) {
            capacity *= 2; // 双倍扩容
            char *temp = (char *)realloc(s, capacity * sizeof(char));
            if (temp == NULL) {
                fprintf(stderr, "内存分配失败\n");
                free(s);
                return 1;
            }
            s = temp;
        }
        s[len++] = (char)c; // 存储字符并增加长度
    }
    s[len] = '\0'; // 添加字符串终止符

    printf("%s", s); // 输出字符串
    free(s);        // 释放分配的内存
    return 0;
}

全部评论

相关推荐

08-23 20:17
四川大学 C++
xxxzsfa:技术栈可以参考我这个给写,把知识点写出来起码能让面试官知道你是知道这个点的,不会的知识点可以不写,简历上写了但又答不上来就很尴尬了,可以给技术栈中的知识点和项目中的难点亮点加粗,学历不错,肯定会有大厂面的,刚开始可以先投中小厂练手,拿个offer保底再去面大厂,秋招可以正式和实习一起找,找工作是个需要长期坚持的过程,加油查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务