国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 7427|回復(fù): 3
打印 上一主題 下一主題

[提問] 關(guān)于字符串輸出問題請教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2009-6-9 16:31:51 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: 請教 , 輸出 , 字符
看《感悟設(shè)計》 第17、“由數(shù)組非法操作想到的” 其中一段程序:
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);
}

作者想要說明的是語句 case 2: strcpy(string,“請切換到備用電池,然后給主電池充電”);  由于string[ ]只定義了10個字節(jié),因此造成數(shù)組越界,引起程序死機(jī)。好不容易查到問題所在,修正char  string[50]; 后,問題解決。(可以算出,該字符串大概需要35字節(jié)。)
我的疑問,printf(*str)語句可以直接輸出字符串,為何作者在這里卻要經(jīng)過一個中間步驟?例:

strcpy(string,“高壓危險”);
printf(string);

先把code區(qū)的字符串常量"高壓危險"拷貝到data區(qū)數(shù)組string[ ]內(nèi),然后printf(string);

多此一舉呀?誰能幫俺解釋這種高手寫的程序,畢竟作者是研發(fā)主管,干了十多年開發(fā)工作,又是寫在書上教導(dǎo)咱菜鳥的程序。實(shí)在一頭霧水。

這段程序的編譯結(jié)果大致為:
linking...
Program Size: data=80.1 xdata=0 code=1418
"test" - 0 Error(s), 0 Warning(s).

?STACK=68H(=104)   堆棧指針在程序初始就高到了104,還有多少字節(jié)好用?

那如果要求輸出的字符串更長的話,按照作者程序概念,是不是我要定義char  string[100]; 或者更長?
沙發(fā)
發(fā)表于 2009-6-10 00:45:22 | 只看該作者
char str[sizeof("請切換到備用電池,然后給主電池充電") + 1];  

不要養(yǎng)成string做變量名(字符串名)的壞習(xí)慣~~~
板凳
 樓主| 發(fā)表于 2009-6-10 09:00:27 | 只看該作者
換一種寫法:

void print_string(int str_ID)
{
switch(str_ID)
{
case 0:     printf("高壓危險");
       break;

case 1:    printf("安全電壓");
         break;

case 2:    printf("請切換到備用電池,然后給主電池充電");   

       break;
}

}

編譯結(jié)果:

linking...
Program Size: data=9.0   xdata=0    code=238
"test" - 0 Error(s), 0 Warning(s).

?STACK=08H       堆棧指針指向08, 沒用到任何數(shù)組和RAM內(nèi)存!
地板
 樓主| 發(fā)表于 2009-6-10 09:11:11 | 只看該作者
再換一種寫法:
code char  *a="高壓危險";
code char  *b="安全電壓";
code char  *c="請切換到備用電池,然后給主電池充電";   


void print_string(int str_ID)
{
switch(str_ID)
{
case 0:    printf(a);
       break;

case 1:    puts(b);
         break;

case 2:    puts(c);   

       break;
}

}

編譯結(jié)果:

linking...
Program Size: data=9.0   xdata=0    code=234
"test" - 0 Error(s), 0 Warning(s).

?STACK=08H       堆棧指針指向08, 沒用到任何數(shù)組和RAM內(nèi)存!
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天堂男人 | 欧美特级特黄a大片免费 | 两个人免费看 | 亚洲欧美日韩一区二区在线观看 | 久热国产vs视频在线观看 | 亚洲视频一区二区三区四区 | 日本欧美小视频 | 亚洲视频一区二区在线观看 | 久久免费观看视频 | 亚洲国产成人久久综合一区77 | 色视频在线免费观看 | 国产一区二区三区视频在线观看 | 国产在线视频自拍 | 高清视频在线播放ww | 91香蕉国产观看免费人人 | 久久国产精品无码网站 | 欧美精品九九99久久在观看 | 国产专区视频 | 国产一级 黄 片 | 欧美成人精品一区二区 | 午夜hhh视频在线观看hhhh | 国产成人综合久久精品尤物 | 国产高清免费的视频 | 国产在线观看人成激情视频 | 台湾最新电视剧 | 成人免费在线观看网站 | 欧美一区二区三区四区五区六区 | 精品推荐国产麻豆剧传媒 | 久久这里有精品 | 欧美日韩在线成人免费 | 一级特黄国产高清毛片97看片 | 国产精品视频网 | 日韩在线视频免费不卡一区 | 国产国语一级a毛片高清视频 | 男男羞羞视频网站国产 | 久久香蕉国产线看观看亚洲片 | 国产精品三级 | 亚洲欧美日韩高清一区二区三区 | 91在线一区二区 | 91精品国产肉丝高跟在线 | 国产二区自拍 |