|
板凳
發(fā)表于 2009-6-8 14:24:51
|
只看該作者
本帖最后由 ydz0515 于 2009-6-8 17:04 編輯
俺有個(gè)問(wèn)題:看王瑋寫(xiě)的《感悟設計》目錄,只對“17、由數組非法操作想到的”一章有點(diǎn)翻閱興趣,于是跑了一趟新華書(shū)店。結果大失所望:如果說(shuō)有意造出那么一個(gè)錯誤程序print_string(。;作為講解概念范例,那還可以理解。但是作者說(shuō)這是他在實(shí)踐中自己寫(xiě)的。唉,.....
俺頭腦中的概念:對于const 字符串的輸出printf( )或者puts( ),根本不需要分配使用靜態(tài)數組或者占用寶貴RAM。
再說(shuō),如果實(shí)踐中要求輸出更長(cháng)的字符串,難道作者就只能定義
char string[100];?! ——根本不需要!
作者可是儼然以教書(shū)先生在這寫(xiě)書(shū)給我們講課來(lái)的。
請教諸位,這段程序應該怎么寫(xiě)?讓咱讀者教教EDN的高手老師。
void print_string(int str_ID)
{
char string[10]; //修正后 char string[50];
switch(str_ID)
{
case 0: strcpy(string,“高壓危險”);
break;
case 1: strcpy(string,“安全電壓”);
break;
case 2: strcpy(string,“請切換到備用電池,然后給主電池充電”); //這里
// 在原本定義 char string[10]; 時(shí)越界,
// 修改為 char string[50]; 后問(wèn)題解決。
break;
}
printf(string);
} |
|