|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <stdlib.h>
- #define INCREMENT 10
- #define INIT_SIZE INCREMENT
- int main()
- {
- char ch;
- char *num;//存储整个数据的首地址
- char *last;//存储最后一次迭代的起始地址
- int limit = 0;//每次迭代的限制值
- long times;//记录重新申请多少次内存
-
- num = (char *)malloc(INIT_SIZE);
- if(num == NULL)
- {
- exit(1);
- }
-
- last = num;//指向同一个地址
-
- printf("请输入一个整数:");
-
- while((ch = getchar()) != '\n')
- {
- last[limit++] = ch;
-
- if(limit >= INCREMENT)
- {
- int offset = last - num;
- num = (char *)realloc(num, INIT_SIZE + INCREMENT * times++); //函数调用成功时,返回新的内存空间的指针
- last = num;//last指向新的内存空间的首地址
- //下面两句应该是令last指向本次字符串的末尾,但是有offset就够了,为什么要加上INCREMENT呢?
- last += offset;
- last += INCREMENT;
- limit = 0;
- }
- }
- last[limit] = '\0';
-
- printf("你输入的整数是:%s\n", num);
-
- return 0;
- }
复制代码
|
|