如果名字在編譯時已經決定,如果沒有必要在運行時更改名稱,然後通過各種手段選擇最簡單的替代方案,也就是 -
#define NAME "Lannister"
char write_letter[] = "Here you are Mrs. " NAME " Welcome!\r\n"
"Getting Started\r\n"
"Interviews\r\n"
"Take-home Projects\r\n";
編譯最高級別的警告組。當你這樣做,你會 得到類似於「初始化字符串的字符串爲 太長」(這是由GCC產生的警告)類似的警告。 50對於 這個數組太小,因此我已經允許編譯器決定數組大小 (即'write_letter []')。
如果您需要在運行時改變字符串然後使用的strcat() -
char write_letter[150] = "Here you are Mrs. ";
char *name = "Lannister";
char *write_letter_post = " Welcome!\r\n"
"Getting Started\r\n"
"Interviews\r\n"
"Take-home Projects\r\n";
strcat(write_letter, name);
strcat(write_letter, write_letter_post);
/*Use strncat() to prevent buffer overflow possibilities.*/
或sprintf的() -
char *_write_letter = "Here you are Mrs. %s Welcome!\r\n"
"Getting Started\r\n"
"Interviews\r\n"
"Take-home Projects\r\n";
char *name = "Lannister";
char write_letter[150];
sprintf(write_letter, _write_letter, name);
/*Use snprintf() to prevent buffer overflow possibilities.*/
sprintf的工作。 Snprintf更好。 – stark
我發現了一個帶有宏的「糖」解決方案**#定義名稱「Lannister」**和**「在這裏,您是Mrs.」NAME「Welcome!\ r \ n」; **,但我不太瞭解宏! –
對於一個常量值,使用宏很好。 – stark