→ nh60211as: 你 &b[3] = b; 在幹嗎 02/23 12:20
那個程式碼有些地方是亂打的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
→ nh60211as: 都沒問題餒,有完整程式碼嗎 02/23 12:25
→ james732: 個人建議先寫出正確的程式,效能考量再針對瓶頸最佳化 02/23 13:27
推 KaryuuIssen: 感覺你好像解決了? 沒看懂你想問什麼 02/23 15:41
推 pinefruit: 用你試出的方法 a = &b[3],或是 a = b + 3 都可以。 02/23 16:02
→ pinefruit: 另外,b 要宣告成陣列或指標對這問題並沒有影響。 02/23 16:03
推 ctrlbreak: 我覺得他是不知道這樣寫printf("%s",b[3]);為什麼會錯 02/23 18:19
推 peterbrucele: 與樓上同感 似乎沒看清楚data type? 02/24 00:49
推 TeaEEE: %c 02/24 08:45
已經解決了,昨天莫名其妙都搞不出解答
完整一點:
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
→ ctrlbreak: s = &s[3]; // 有點恐怖 02/24 12:17
怎麼說呢? 不過我似乎把陣列當link list使用了..
※ 編輯: ericerix (140.115.53.191 臺灣), 02/24/2021 13:34:26
推 annheilong: 應該寫 s = s+3; 02/24 16:59
推 philip80220: char *s="1234567"; <-不要這樣宣告啊~看一下十三誡 02/24 23:46
→ philip80220: 的第四點 02/24 23:46