C和指针之动态内存分配之编程练习3
来源:互联网 发布:数据库union和join 编辑:程序博客网 时间:2024/05/18 14:24
1、问题
编写一个函数,从标准输入读取一个字符串,把字符串复制到动态内存分配的内存中,并返回该字符串的拷贝,这个函数不应该对读入字符串的长度作任何限制!
2、代码实现
#include <stdio.h>#include <stdlib.h>#define OFFSET 5char *my_strcpy(){ char *buffer = NULL; //缓冲区的长度 int buffer_len = 0; //屏幕字符总长度 int all_len = 0; char *p = buffer; int ch; while ((ch = getchar()) != '\n' && ch != EOF) { if (all_len >= buffer_len) { //再次申请的长度 buffer_len += OFFSET; //扩充内存空间 buffer = realloc(buffer, buffer_len); //指向刚申请内存空间的空闲地方 p = buffer + all_len; } all_len++; *p++ = ch; } *p = '\0'; return buffer;}int main(){ char *result = my_strcpy(); printf("result is %s\n", result); if (result) free(result); return 0;}
3、运行结果
1111deMacBook-Pro:malloc a1111$ vim my_cpystr.c1111deMacBook-Pro:malloc a1111$ gcc -g my_cpystr.c -o my_cpystr1111deMacBook-Pro:malloc a1111$ ./my_cpystrchenyuresult is chenyu
阅读全文
0 0
- C和指针之动态内存分配之编程练习3
- C和指针之动态内存分配之编程练习4
- C和指针之动态内存分配常见问题和总结
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- C和指针之动态内存分配之输入很多整数进行排序
- C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- c语言动态内存分配之正确使用指针
- C和指针之动态内存分配malloc、calloc、realloc简单使用和区别
- C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)
- C和指针之字符串编程练习3
- C和指针详解------动态内存分配
- C和指针之数组之编程练习2
- C和指针之动态内存分配堆、栈、全局区(静态区)、常量区对比总结学习笔记
- C/C++之动态内存分配比较
- 10.C语言之动态内存分配
- c语言基础之动态内存分配
- C语言之动态内存分配
- C语言之动态内存分配
- c++中count函数的用法、cin>>hex>>a
- android数据存储之SQLite的使用
- 【思路】1.后台登录
- 三子棋小游戏
- 51NOD-1082-与7无关的数
- C和指针之动态内存分配之编程练习3
- XPS15 9560 UBUNTU安装
- 程序员到底该怎么找资源?
- ELKB6.0部署记录
- 【思路】2.权限控制
- centos 6.8 搭建LAMP环境及配置
- 并发工具类(三)控制并发线程的数量 Semphore
- Raptor中生成任意范围的随机数
- Android自定义View——从零开始实现可暂停的旋转动画效果