getchar()函數(shù)的原型是 int getchar( void )
成都創(chuàng)新互聯(lián)公司企業(yè)建站,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁(yè)設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營(yíng)經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁(yè)中充分展現(xiàn),通過(guò)對(duì)客戶行業(yè)精準(zhǔn)市場(chǎng)調(diào)研,為客戶提供的解決方案。
返回值是整型的
功能是:從標(biāo)準(zhǔn)輸入中讀取一個(gè)字符,也就是鍵盤敲擊字符,只接收單個(gè)字符
可以用gets()函數(shù)來(lái)接收多個(gè)字符
這里的 s 接收的是該字符的ASCII碼,非長(zhǎng)度。
如果從原基礎(chǔ)上改可以這樣
int i;
char s[20]; /*字符串需要長(zhǎng)度*/
gets( s );
i = num( s );
int num( char *s ) /* 這里的指針 ,后面學(xué)得到*/
{
}
套上去就可以了
C語(yǔ)言計(jì)算字符串長(zhǎng)度,可以手動(dòng)計(jì)算也可以使用庫(kù)函數(shù)或者sizeof()操作符。
方法:
自定義函數(shù)求長(zhǎng)度
使用strlen()函數(shù)
使用sizeof()操作符
自定義函數(shù):
int cont_str(char *s)
{
int i = 0; ? ?
while ( str[i++] != '\0')? ?;
return i;
}
使用string頭文件中的strlen()函數(shù):
strlen(str); //假設(shè)str為待求的字符串?dāng)?shù)組名
使用sizeof()操作符:
sizeof(str)/sizeof(str[0]); //假設(shè)str為待求的字符串?dāng)?shù)組名
注意:
strlen()函數(shù)求出的字符串長(zhǎng)度為有效長(zhǎng)度,既不包含字符串末尾結(jié)束符 ‘\0’;
sizeof()操作符求出的長(zhǎng)度包含字符串末尾的結(jié)束符 ‘\0’;
當(dāng)在函數(shù)內(nèi)部使用sizeof()求解由函數(shù)的形參傳入的字符數(shù)組的長(zhǎng)度時(shí),得到的結(jié)果為指針的長(zhǎng)度,既對(duì)應(yīng)變量的字節(jié)數(shù),而不是字符串的長(zhǎng)度,此處一定要小心。
C語(yǔ)言中字符串長(zhǎng)度的函數(shù)是strlen(),一個(gè)字符的長(zhǎng)度為1;
函數(shù)原型:
unsigned int strlen (char *s);頭文件:
#include string.h參數(shù)說(shuō)明:s為指定的字符串;
功能說(shuō)明:strlen()用來(lái)計(jì)算指定的字符串s 的長(zhǎng)度,不包括結(jié)束字符'\0';
返回值:返回字符串s 的字符數(shù);
注意:strlen() 函數(shù)計(jì)算的是字符串的實(shí)際長(zhǎng)度,遇到第一個(gè)'\0'結(jié)束。
示例:
#includestdio.h#includestring.hint main(){ char str[] = "ab\nxyz";//\n為回車字符,占一個(gè)字節(jié) printf("strlen(str)=%d\n", strlen(str)); return 0;}//輸出結(jié)果:strlen(str)=6 收起
int strlenOwn(const char* psz) /*const使得字符數(shù)組不被修改*/
{
int len=0;
while( *(psz++) ) //psz加啊加啊最后指到了字符串的最后一個(gè)的后面,檢測(cè)到了"\0"
len++; //(接上)于是乎while檢測(cè)為false(即檢測(cè)到0),字符串長(zhǎng)len就算出來(lái)了
return len;
}
這里面psz++是指針的位移操作,移動(dòng)指向位置的,字符串常量對(duì)于c語(yǔ)言來(lái)說(shuō)就是一種數(shù)組嘛
而括號(hào)外面的“ * ”是解引用符號(hào),其實(shí)意思就是取指針當(dāng)前位置的值,而不是它的地址。
一般是32個(gè)有效字符,但是這是別人規(guī)定的。
一般的函數(shù)名現(xiàn)在比較好的有幾種 你可以參考下:
inFoodofSUM() 就是前面有了int類型 比較方便容易看
Food_Sum 就是駝峰型的 就是有原意的理解
一般是以工作單位的編寫風(fēng)格而定 不過(guò)上面兩個(gè)現(xiàn)在還不比較流行的 因?yàn)楹美斫? 有一種顧名思義的成分
正確的答案是5,題目選項(xiàng)有誤。
首先strlen()函數(shù)返回的長(zhǎng)度是不包含'\0',
第一個(gè)字符為:a
第二個(gè)字符為:b
第三個(gè)字符為:\n (換行符)
第四個(gè)字符為:2
第五個(gè)字符為:\ (\\轉(zhuǎn)義為\)
所以答案為5。
(下圖為實(shí)際代碼演示)
擴(kuò)展內(nèi)容:
strlen()函數(shù)(C語(yǔ)言函數(shù)):
strlen所作的僅僅是一個(gè)計(jì)數(shù)器的工作,它從內(nèi)存的某個(gè)位置(可以是字符串開頭,中間某個(gè)位置,甚至是某個(gè)不確定的內(nèi)存區(qū)域)開始掃描,直到碰到第一個(gè)字符串結(jié)束符'\0'為止,然后返回計(jì)數(shù)器值(長(zhǎng)度不包含'\0')。
參考資料:strlen函數(shù) - 百科