动态内存分配编程题
来源:互联网 发布:万网域名登录 编辑:程序博客网 时间:2024/06/06 06:07
1.有一字符串,其中包含数字,提取其中的数字,要求动态分配内存保存
char str[] = "123456summer123"; //1.计算出字符中数字的个数 int count = 0;//存储数字的个数 int i = 0; while (str[i] != '\0') { if (str[i] >= '0' && str[i] <= '9') { count++; } i++; } printf("count = %d", count); char *p = malloc(count + 1); i = 0; int k = 0;//用来标识 数字数组元素的位置 while (str[i] != '\0') { if (str[i] >= '0' && str[i] <= '9') { *(p + k) = str[i]; k++; } i++; } *(p + k) = '\0';//最后一个补'\0',作为字符串结束标志 printf("\n%s", p); free(p);//释放堆区空间 p = NULL;//将指针变量指向一块无效的区域
//2.输入3个学员的姓名,动态分配内存保存学员姓名,并在最后输出
//(1)从控制台输入的字符串如何存储?
//解决方案:定义一个字符数组,接收输入的字符串
//(2)如何动态为学员姓名开辟空间?
//解决方案:计算出字符串的长度然后加1.
//(3)如何存储为3个学员姓名开辟空间之后的地址?
//解决方案:使用指针数组来进行存储地址,数组中由3个元素.
char tempStr[20] = {0};//接收输入的字符串 char *names[3] = {0};//存储学员姓名 printf("请输入学员姓名:\n"); for (int i = 0; i < 3; i++) { scanf("%s", tempStr);//输入字符串 names[i] = malloc(strlen(tempStr) + 1);//根据字符串大小动态分配内存,将地址存储在对应的指针数组元素中 strcpy(names[i], tempStr);//在临时数组中的数据拷贝到对应的堆区空间上 } for (int i = 0; i < 3; i++) { printf("%s\n", names[i]);//打印堆区字符 free(names[i]);//释放堆区内存 names[i] = NULL;//将指针变量指向无效空间 }
0 0
- 动态内存分配编程题
- C语言编程入门——动态内存分配
- 经典笔试题:动态内存分配,详解
- 动态内存分配
- 关于动态内存分配
- 关于动态内存分配
- 动态内存分配
- 动态内存分配
- 动态内存分配
- 动态内存分配
- 动态内存分配
- C++ 动态内存分配
- VC动态内存分配
- 动态数组分配内存
- C++动态内存分配
- 动态内存分配
- 动态内存分配
- 动态内存分配
- JFFS2文件系统搭建与配置(Micro2440 + linux 2.6.39)
- 杭电ACM求平均成绩
- Socket通信入门小实例
- hdu4861 && hdu4864
- Java代码注释XXX todo fixme 的意义
- 动态内存分配编程题
- Linux中的free命令
- poj 1664放苹果
- 【TOJ 1180】Inversion【贪心】
- CRAMFS文件系统搭建与配置(Micro2440 + linux 2.6.39)
- hexdump的用法
- 【Yaf】Yaf的环境安装遇到的问题以及解决方案
- JavaScript入门:005—JS基本语句
- 反正切函数的应用