[問題] 請問語法問題

作者: pilipalabon (...)   2021-03-12 11:19:35
我使用Keil C編譯器, 請教一個語法問題
char *name = "stream_server";
這樣子會讓string寫到不明位置造成危險嗎?
但我宣告為 char name[];
compiler卻又告訴我 incomplete type is not allowed
我一定要宣告為 char name[10];
才能夠成功 0 Error.
但由於我的所帶入的字串並非都是等長, 不知道該怎樣做才好?
thanks!
作者: Schottky (順風相送)   2021-03-12 11:27:00
問題出在你沒貼出來的地方我隱隱覺得你有犯了置底第四誡就是了
作者: descent (「雄辯是銀,沉默是金」)   2021-03-12 11:35:00
char *, const char*, char str[10] 這些差異你清楚嗎?你是擔心 name 指向不合法位置嗎?
作者: Dinowchang (Dinow)   2021-03-12 12:06:00
用 char *name=(char []){“stream_server”};
作者: d630200x (DOGE)   2021-03-12 12:24:00
字串長度未定的情況下,我會宣告一個足夠的大的陣列,比如char strbuff[255]之類的,方便對字串做操作因為網頁我打不開,所以不確定實際你是怎麼寫就是了
作者: LPH66 (-6.2598534e+18f)   2021-03-12 13:14:00
你這個是結構成員, 當然必須要寫一個長度固定下來char name[] = "myserver"; 這種只有區域變數才能用結構成員的問題在於它不知道有誰會用, 無法提前應對不像區域變數只有當下指定的值在用, 所以可以讓編譯器自動求出用的這裡有多長去留空間結構成員的用法多半就像我樓上說的就給一個最大長度就好或是像下篇文章說的使用 const char *
作者: pilipalabon (...)   2021-03-12 13:28:00
了解....學習了! 謝謝LPH66的解釋!
作者: Gway (我愛的你 也愛我 好嗎?)   2021-03-18 01:34:00
為啥不是 知道strlen後 再malloc len+1(for '/0') ?
作者: Lipraxde (Lipraxde)   2021-03-18 07:17:00
嵌入式系統不見得有 malloc 可以用

Links booklink

Contact Us: admin [ a t ] ucptt.com