版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第C語言實例問題探究字符串函數(shù)的應用目錄一、典型問題一二、典型問題二三、典型問題三四、典型問題四
一、典型問題一
下面的程序輸出什么?為什么
分析
snprintf函數(shù)本身是可變參數(shù)函數(shù),原型如下:intsnprintf(char*buffer,intbuf_size,constchar*fomart,...)
當函數(shù)只有3個參數(shù)時,如果第三個參數(shù)沒有包含格式化信息,函數(shù)調(diào)用沒有問題:相反,如果第三個參數(shù)包含了格式化信息,但缺少后續(xù)對應參數(shù),則程序行為不確定。
下面編程看看究竟會輸出什么:
#includestdio.h
intmain()
charbuf[10]={0};
charsrc[]="hello%s";
snprintf(buf,sizeof(buf),src);
printf("buf=%s\n",buf);
return0;
}
輸出結果如下:
所以程序該這么寫:
#includestdio.h
intmain()
charbuf[10]={0};
charsrc[]="hello%s";
snprintf(buf,sizeof(buf),src,"Ze");
printf("buf=%s\n",buf);
return0;
}
或者這樣:
#includestdio.h
intmain()
charbuf[10]={0};
charsrc[]="helloZe";
snprintf(buf,sizeof(buf),src);
printf("buf=%s\n",buf);
return0;
}
均能輸出正確的結果:
二、典型問題二
下面的程序輸出什么?為什么
分析
字符串相關的函數(shù)均以第一個出現(xiàn)的\0作為結束符編譯器總是會在字符串字面量的末尾添加\0字符串字面量的本質(zhì)為數(shù)組
下面來編程驗證:
#includestdio.h
#includestring.h
intmain()
#defineSTR"Hello,\0D.T.Software\0"
char*src=STR;
charbuf[255]={0};
snprintf(buf,sizeof(buf),src);
printf("strlen(STR)=%d\n",strlen(STR));
printf("sizeof(STR)=%d\n",sizeof(STR));
printf("strlen(src)=%d\n",strlen(src));
printf("sizeof(src)=%d\n",sizeof(src));
printf("strlen(buf)=%d\n",strlen(buf));
printf("sizeof(buf)=%d\n",sizeof(buf));
printf("src=%s\n",src);
printf("buf=%s\n",buf);
return0;
}
輸出結果如下:
注意sizeof(src)=4,這是因為src為指針
三、典型問題三
下面的程序輸出什么?為什么
分析
字符串之間的相等比較需要用strcmp完成不可直接用==進行字符串直接的比較完全相同的字符串字面量的==比較結果為false
一些現(xiàn)代編譯器能夠?qū)⑾嗤淖址置媪坑成涞酵粋€無名字符數(shù)組,因此==比較結果為true。
下面來編程驗證:
#includestdio.h
#includestring.h
intmain()
#defineS1"D.T.Software"
#defineS2"D.T.Software"
if(S1==S2)
printf("Equal\n");
else
printf("NonEqual\n");
if(strcmp(S1,S2)==0)
printf("Equal\n");
else
printf("NonEqual\n");
return0;
}
在gcc編譯器中輸出結果如下:
在VS2012編譯器的輸出結果也是:
四、典型問題四
字符串循環(huán)右移
voidright_shift_r(constchar*src,char*result,unsignedintn);
函數(shù)功能:將輸入字符串src循環(huán)右移n位,result為輸出結果
要求:以效率最高的方式實現(xiàn)。
示例:
abcde--2--deabc
abcde--8--cdeab
來看一個示意圖:
代碼如下:
#includestdio.h
#includestring.h
voidright_shift_r(constchar*src,char*result,unsignedintn)
constunsignedintLEN=strlen(src);
inti=0;
for(i=0;iLEN;i++)
result[(n+i)%LEN]=src[i];
result[LEN]='\0';
intmain()
charresult[255]={0};
right_shift_r("abcde",result,2);
printf("%s\n",result);
right_shift_r("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年鄭州城市職業(yè)學院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年南通科技職業(yè)學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年青島酒店管理職業(yè)技術學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年廣東工程職業(yè)技術學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年寧夏工商職業(yè)技術學院高職單招職業(yè)適應性測試模擬試題及答案詳細解析
- 2026年南昌交通學院高職單招職業(yè)適應性測試備考題庫及答案詳細解析
- 2026年保定理工學院高職單招職業(yè)適應性測試備考試題及答案詳細解析
- 2026年黑龍江藝術職業(yè)學院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年保定幼兒師范高等專科學校單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 2026年南京鐵道職業(yè)技術學院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 河北審圖合同協(xié)議
- 溴化鋰機組回收合同(2篇)
- 菏澤某中學歷年自主招生試題
- 醫(yī)院非產(chǎn)科孕情管理和三病檢測工作流程
- 中小學的德育工作指南課件
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- 物業(yè)保潔保安培訓課件
- 人教版初中英語七至九年級單詞匯總表(七年級至九年級全5冊)
- cnc加工中心點檢表
- 計劃決策評審-匯報模板課件
- 《食品分析》復習備考試題庫(附答案)
評論
0/150
提交評論