[問題] 利用pointer取substring

看板C_and_CPP (C/C++)作者 (我的帥,在於臉)時間3年前 (2021/02/23 12:17), 3年前編輯推噓7(707)
留言14則, 9人參與, 3年前最新討論串1/1
開發平台(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去指,可能會快速很多。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.154.216 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1614053845.A.A52.html

02/23 12:20, 3年前 , 1F
你 &b[3] = b; 在幹嗎
02/23 12:20, 1F
那個程式碼有些地方是亂打的XDD 不好意思沒有刪乾淨, 我剛剛試了一下,這樣是可以實作出我想做的: const char b[] = "1234567"; const char *a; a = &b[3]; printf("%s",a); 看來b的宣告是個關鍵。有人可以跟我說為什麼嗎QQ 我C苦手 ※ 編輯: ericerix (211.23.154.216 臺灣), 02/23/2021 12:21:55

02/23 12:24, 3年前 , 2F

02/23 12:25, 3年前 , 3F
都沒問題餒,有完整程式碼嗎
02/23 12:25, 3F

02/23 13:27, 3年前 , 4F
個人建議先寫出正確的程式,效能考量再針對瓶頸最佳化
02/23 13:27, 4F

02/23 15:41, 3年前 , 5F
感覺你好像解決了? 沒看懂你想問什麼
02/23 15:41, 5F

02/23 16:02, 3年前 , 6F
用你試出的方法 a = &b[3],或是 a = b + 3 都可以。
02/23 16:02, 6F

02/23 16:03, 3年前 , 7F
另外,b 要宣告成陣列或指標對這問題並沒有影響。
02/23 16:03, 7F

02/23 18:19, 3年前 , 8F
我覺得他是不知道這樣寫printf("%s",b[3]);為什麼會錯
02/23 18:19, 8F

02/24 00:49, 3年前 , 9F
與樓上同感 似乎沒看清楚data type?
02/24 00:49, 9F

02/24 08:45, 3年前 , 10F
%c
02/24 08:45, 10F
已經解決了,昨天莫名其妙都搞不出解答 完整一點: char *s = "1234567"; printf("%s",s); // "1234567" s = &s[3]; printf("%s",s); // "4567" 是可以解決的 謝謝大家! ※ 編輯: ericerix (140.115.50.48 臺灣), 02/24/2021 09:29:08

02/24 12:17, 3年前 , 11F
s = &s[3]; // 有點恐怖
02/24 12:17, 11F
怎麼說呢? 不過我似乎把陣列當link list使用了.. ※ 編輯: ericerix (140.115.53.191 臺灣), 02/24/2021 13:34:26

02/24 16:59, 3年前 , 12F
應該寫 s = s+3;
02/24 16:59, 12F

02/24 23:46, 3年前 , 13F
char *s="1234567"; <-不要這樣宣告啊~看一下十三誡
02/24 23:46, 13F

02/24 23:46, 3年前 , 14F
的第四點
02/24 23:46, 14F
文章代碼(AID): #1WD87LfI (C_and_CPP)
文章代碼(AID): #1WD87LfI (C_and_CPP)