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