[問題] 利用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