|
发表于 2019-7-20 21:49:26
|
显示全部楼层
刚刚按我说的写了个,都没有用到指针函数,参考下
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define NUM 20
- void ext_num2(char *str, char *str_num[])
- {
- int i = -1;
- int j = -1, k= 0;
- while (str[++i] != '\0')
- {
- if (str[i] >= '0' && str[i] <= '9') // // 因为数字子字符串中的数字字符个数未知,故动态申请内存
- {
- if (k==0)
- {
- str_num[++j] = (char *)malloc(NUM * sizeof(char));
- memset(str_num[j], '\0', NUM * sizeof(char));
- if (str_num[j] == NULL)
- {
- printf("申请内存失败!\n");
- exit(1);
- }
-
- }
- str_num[j][k] = str[i];
- k++;
- continue;
- }
- else
- {
- k=0; // 标记数字开始,也用于数组累加
- }
- }
- }
- int main()
- {
- char str[100];
- char *str_num[100]={NULL};
- int i;
- printf("请输入一个字符串: ");
- gets(str);
- ext_num2(str, str_num);
- printf("\n输出字符\n");
- i = 0;
- while(str_num[i]!=NULL)
- {
- printf("ptr[%d] --> %s \n", i, str_num[i]);
- free(str_num[i]);
- i++;
- }
-
- return 0;
- }
复制代码 |
|