[问题] 利用pointer取substring

楼主: ericerix (Ponwar)   2021-02-23 12:17:20
开发平台(Platform): (Ex: Win10, Linux, ...)
Win 10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Leetcode
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
如何使用pointer去取substring
喂入的资料(Input):

预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://pastebin.com/viUgV0FU
补充说明(Supplement):
想达成的目的是:
有一个变量为 char *b="1234567";
想利用pointer去取到"4567"这样,
虽然pointer的观念不是很熟悉,
但大概知道,array的用法就是起头的pointer加上bias,
一开始是想说,把char *a这个变量指到b[3]的位址,
然后直接printf出这个a,但ㄧ直出错
找了找网络上的方法,都是用一格一格去复制到a的,
但我觉得这样效率不好,因为我想做的题目若这样做的话,时间复杂度会提高很多,
如果直接用pointer去指,可能会快速很多。
作者: nh60211as   2021-02-23 12:20:00
你 &b[3] = b; 在干吗https://wandbox.org/permlink/gUoZFk4i2USYXwPn都没问题馁,有完整程式码吗
作者: james732 (好人超)   2021-02-23 13:27:00
个人建议先写出正确的程式,效能考量再针对瓶颈最佳化
作者: KaryuuIssen (一闪)   2021-02-23 15:41:00
感觉你好像解决了? 没看懂你想问什么
作者: pinefruit (莫使惹尘埃)   2021-02-23 16:02:00
用你试出的方法 a = &b[3],或是 a = b + 3 都可以。另外,b 要宣告成阵列或指标对这问题并没有影响。
作者: ctrlbreak   2021-02-23 18:19:00
我觉得他是不知道这样写printf("%s",b[3]);为什么会错
作者: peterbrucele (DM5)   2021-02-24 00:49:00
与楼上同感 似乎没看清楚data type?
作者: TeaEEE (爱不趴 不爱趴)   2021-02-24 08:45:00
%c
作者: ctrlbreak   2021-02-24 12:17:00
s = &s[3]; // 有点恐怖
作者: annheilong (方格子)   2021-02-24 16:59:00
应该写 s = s+3;
作者: philip80220 (花)   2021-02-24 23:46:00
char *s="1234567"; <-不要这样宣告啊~看一下十三诫的第四点

Links booklink

Contact Us: admin [ a t ] ucptt.com