|
发表于 2009-6-8 14:24:51
|
显示全部楼层
本帖最后由 ydz0515 于 2009-6-8 17:04 编辑
俺有个问题:看王玮写的《感悟设计》目录,只对“17、由数组非法操作想到的”一章有点翻阅兴趣,于是跑了一趟新华书店。结果大失所望:如果说有意造出那么一个错误程序print_string( );作为讲解概念范例,那还可以理解。但是作者说这是他在实践中自己写的。唉,.....
俺头脑中的概念:对于const 字符串的输出printf( )或者puts( ),根本不需要分配使用静态数组或者占用宝贵RAM。
再说,如果实践中要求输出更长的字符串,难道作者就只能定义
char string[100];?! ——根本不需要!
作者可是俨然以教书先生在这写书给我们讲课来的。
请教诸位,这段程序应该怎么写?让咱读者教教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]; 时越界,
// 修改为 char string[50]; 后问题解决。
break;
}
printf(string);
} |
|