【发布时间】:2018-04-10 15:19:02
【问题描述】:
我遇到了指针相减的问题。
char a[] = "abcdefghijkl";
a2 = 'g';
a3 = "jkl";
*a4, *a5;
a4 = strchr(a,a2);
a5 = strstr(a,a3);
printf("%s\n", a+6);
printf("%c\n", *a);
printf("%c\n", *(++a4));
printf("%c\n", ++(*a4));
printf("%ld\n", a5-a4);
printf("%s\n", &a[2]);
- printf 函数打印:ghijkl
- printf 函数打印:a
- printf 函数打印:h
- printf 函数打印:i
- printf 函数打印:2
- printf 函数打印:cdefgiijkl
5。和 6. 对我来说有问题。 a4 的最后一种形式指向“i”,a5 指向“j”。在这种情况下,我认为我应该取 1 作为 a5-a4 的结果。 最后一个对我来说也很复杂。我只需要它是“c”。
【问题讨论】:
-
请添加一个 MCVE stackoverflow.com/help/mcve
-
@CIsForCookies 为使其成为完整的 MCVE 而给出的代码中唯一缺少的是
main()。 -
a2和a3有哪些数据类型?
-
您是否在调试器中单步执行过这段代码?甚至以十六进制打印值? printf 会将指针视为指向以 %s 结尾的以 null 结尾的字符,为什么它会停在 'c' 处?
-
a5 = strchr(a,a3);,这里a3是字符串,strchr()需要一个 int 作为第二个参数。你没有收到警告吗?