wow7jiao 发表于 2018-7-21 16:29:09

请老师指点一下 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.}

人造人 发表于 2018-7-21 16:29:10

人造人 发表于 2018-7-21 18:05:48

http://bbs.fishc.org/thread-118134-1-1.html
^_^

wow7jiao 发表于 2018-7-21 18:26:18

本帖最后由 wow7jiao 于 2018-7-21 18:32 编辑

人造人 发表于 2018-7-21 18:03


是循环出来以后再打印的10

last += define 加的10

人造人 发表于 2018-7-21 18:31:48

wow7jiao 发表于 2018-7-21 18:26
是循环出来以后再打印的10

^_^

页: [1]
查看完整版本: 请老师指点一下 last偏移 c语言39课动动手课后题第一题