请老师指点一下 last偏移 c语言39课动动手课后题第一题
本帖最后由 wow7jiao 于 2018-7-21 16:32 编辑http://bbs.fishc.org/thread-80955-1-5.html
-------------------------------------------
01.#include <stdio.h>
02.#include <stdlib.h>
03.
04.#define INCREMENT 10
05.#define INIT_SIZE INCREMENT
06.
07.int main(void)
08.{
09. char ch;
10. char *num; // 存储整个数据的首地址
11. char *last; // 最近一次迭代的起始地址
12. int limit = 0; // 每次迭代的限制值
13. long times = 1; // 记录重新申请多少次内存
14.
15. num = (char *)malloc(INIT_SIZE);
16. if (num == NULL)
17. {
18. exit(1);
19. }
20.
21. last = num;
22.
23. printf("请输入一个整数:");
24.
25. while ((ch=getchar()) != '\n')
26. {
27. last = ch;
28. if (limit >= INCREMENT)
29. {
30. int offset = last - num;//<---------------------------------源地址减目标地址才有偏移,请问last是什么时候自增加的,上面只有last(这个不会使last地址自增的,所以offset永远结果是0)
31. num = (char *)realloc(num, INIT_SIZE + INCREMENT * times++);
32. last = num;
33. last += offset;
34. last += INCREMENT;
35. limit = 0;
36. }
37. }
38. last = '\0';
39.
40. printf("你输入的整数是:%s\n", num);
41.
42. return 0;
43.}
http://bbs.fishc.org/thread-118134-1-1.html
^_^ 本帖最后由 wow7jiao 于 2018-7-21 18:32 编辑
人造人 发表于 2018-7-21 18:03
是循环出来以后再打印的10
last += define 加的10 wow7jiao 发表于 2018-7-21 18:26
是循环出来以后再打印的10
^_^
页:
[1]