欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c語言中字符串詳解-創(chuàng)新互聯(lián)

c語言字符串詳解 8.1 字符數(shù)組與字符串區(qū)別

C語言中沒有字符串這種數(shù)據(jù)類型,可以通過char型數(shù)組來替代; 注意:

在邯鄲等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),邯鄲網(wǎng)站建設(shè)費(fèi)用合理。

C語言中,字符串一定是一個(gè)char型數(shù)組,但char型數(shù)組未必是字符串;

在C語言的char型數(shù)組中,數(shù)字0(和字符‘\0’等價(jià))結(jié)尾的char數(shù)組就是一個(gè)字符串,但如果char型數(shù)組沒有以數(shù)字0結(jié)尾,那么就不是一個(gè)字符串,只是普通字符數(shù)組,所以字符串是一種特殊的char的數(shù)組。

#include

int main0801()

{

char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符數(shù)組

printf("c1 = %s\n", c1); //亂碼,因?yàn)闆]有’\0’結(jié)束符

//以‘\0’(‘\0’就是數(shù)字0)結(jié)尾的字符數(shù)組是字符串

char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0' };

printf("c2 = %s\n", c2);

//字符串處理以‘\0’(數(shù)字0)作為結(jié)束符,后面的'h', 'l', 'l', 'e', 'o'不會輸出

char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0' };

printf("c3 = %s\n", c3);

return 0;

}

運(yùn)行結(jié)果:

如圖:

char1沒有’\0’,輸出了亂碼

char2有’\0’,正常輸出

char3中遇到第一個(gè)\0后,之后的字符串就不再輸出。

8.2 字符串的初始化

#include

int main()

{

//不指定長度,沒有0結(jié)束符,有多少個(gè)元素就有多長

char buf[] = { 'a','b','c' };

printf("buf= %s\n", buf);

//指定長度,后面沒有賦值的元素,自動補(bǔ)0

char buf2[100] = { 'a','b','c' };

char buf[1000] = { "hello" };

printf("buf2=%s\n", buf2);

//所有元素賦值為0

char buf3[100] = { 0 };

//char buf4[2] = { '1','2','3' };//數(shù)組越界

char buf5[50] = { '1','a','b','0','7' };

printf("buf5=%s\n", buf5);

char buf6[50] = { '1','a','b',0,'7' };

printf("buf6=%s\n", buf6);

char buf7[50] = { '1','a','b','\0','7' };

printf("buf7=%s\n", buf7);

//使用字符串初始化,編譯器自動在后面補(bǔ)0,常用

char buf8[] = "dgasiugduaishg";

//'\0'后面最好不要連著數(shù)字,有可能幾個(gè)數(shù)字連起來正好是一個(gè)轉(zhuǎn)義字符

//'\ddd'八進(jìn)制字義字符,'\xdd'十六進(jìn)制轉(zhuǎn)義字符

//\012相當(dāng)于

char str[] = "\012abc";

printf("str==%s\n", str);

return 0;

}

8.3 字符串的輸入輸出

由于字符串采用了'\0'標(biāo)志,字符串的輸入輸出將變得簡單方便。

#define? _CRT_SECURE_NO_WARNINGS

#include

int main()

{

char str[100];

printf("input string1:\n");

scanf("%s", str);//scanf("%s", str);默認(rèn)以空格為分隔

printf("output:%s\n", str);

return 0;

}

如圖,空格后面被忽略

8.3.1 gets()

功能:從標(biāo)準(zhǔn)輸入讀入字符,并保存到s指定的內(nèi)存空間,直到出現(xiàn)換行符或讀到文件結(jié)尾為止。

參數(shù):

s:字符串首地址

返回值(char*):

成功:讀入的字符串

失?。篘ULL

gets(str)與scanf("%s", str)的區(qū)別:

gets(str)允許輸入的字符串含有空格

scanf("%s", str)不允許含有空格

注意:由于scanf()和gets()無法知道字符串s大小,必須遇到換行符或讀到文件結(jié)尾為止才接收輸入,因此容易導(dǎo)致字符數(shù)組越界(緩沖區(qū)溢出)的情況,所以我們在定義char型數(shù)組時(shí),應(yīng)該確保其空間足夠大。

char str[100];

printf("請輸入str: ");

gets(str);

printf("str = %s\n", str);

8.3.2 puts()

功能:標(biāo)準(zhǔn)設(shè)備輸出s字符串,在輸出完成后自動輸出一個(gè)'\n'。

參數(shù):

s:字符串首地址

返回值(int):

成功:非負(fù)數(shù)

失敗:-1

int main() {

printf("hello world");

puts("hello world");

return 0;

}

8.4 strlen()

功能:計(jì)算指定指定字符串s的長度,不包含字符串結(jié)束符‘\0’

參數(shù):

s:字符串首地址

返回值:字符串s的長度(unsigned? int)

char str[] = "abc\0defg";

int n = strlen(str);

printf("n = %d\n", n);

實(shí)踐時(shí)間(10分鐘)

1. 根據(jù)案例需求,用C或C++語言編寫代碼,完成程序。

案例:字符串追加

使用C語言編寫一段程序,要求不允許使用標(biāo)準(zhǔn)庫函數(shù),在一串字符串后面追加另一串字符串,使得兩串字符串拼接在一起。

1.?? 輸入兩串字符串

2.?? 在不使用標(biāo)準(zhǔn)庫函數(shù)的情況下將第二串字符串內(nèi)容拼接到第一串字符串末尾,使得兩串字符串拼接成為全新的 字符串。

3.?? 將新的字符串打印在屏幕上。

示例:

#include

//#include

int main()

{

char s1[200];

char s2[100];

printf("輸入第一個(gè)字符串");

gets(s1);

printf("輸入第二個(gè)字符串");

gets(s2);

int i=0, j;

while (s1[i] !=0)

{

i++;

}

for (i, j = 0; s2[j] !=0; i++, j++)//只用在s1的后面接上即可

{

s1[i] = s2[j];

}

s1[i] = 0;//不把最后一位手動變成0,會導(dǎo)致亂碼

puts(s1);???

}

8.5 字符串處理相關(guān)函數(shù)

8.5.1 strcpy()

strcpy? (dest,? src);

功能:把src所指向的字符串復(fù)制到dest所指向的空間中,'\0'也會拷貝過去

參數(shù):

dest:目的字符串首地址(char*)

src:源字符首地址(const char*)

返回值(char*):

成功:返回dest字符串的首地址

失?。篘ULL

注意:如果參數(shù)dest所指的內(nèi)存空間不夠大,可能會造成緩沖溢出的錯(cuò)誤情況。

char dest[20] = "123456789";

char src[] = "hello world";

strcpy(dest, src);

printf("%s\n", dest);

8.5.2 strncpy()

strncpy? (dest,? src, n);

功能:把src指向字符串的前n個(gè)字符復(fù)制到dest所指向的空間中,是否拷貝結(jié)束符看指定的長度是否包含'\0'。

參數(shù):

dest:目的字符串首地址(char*)

src:源字符首地址(const char*)

n:指定需要拷貝字符串個(gè)數(shù)(unsigned int)

返回值(char*):

成功:返回dest字符串的首地址

失?。篘ULL

#define _CRT_SECURE_NO_WARNINGS

#include

#include

int main()

{

char dest[20];

char src[] = "hello world";

strncpy(dest, src, 5);

printf("%s\n", dest); //最后一位未致0

dest[5] = '\0';

printf("%s\n", dest);

}

8.5.3 strcat()

strcat (dest,? src);

功能:將src字符串連接到dest的尾部,‘\0’也會追加過去

參數(shù):

dest:目的字符串首地址(char*)

src:源字符首地址(const char*)

返回值(char*):

成功:返回dest字符串的首地址

失?。篘ULL

#include

int main()

{

char str[20] = "123";

char src[] = "hello world";

printf("%s\n", strcat(str, src));

}

8.5.4 strncat()

strncat (dest,? src, n);

功能:將src字符串前n個(gè)字符連接到dest的尾部,‘\0’也會追加過去

參數(shù):

dest:目的字符串首地址(char*)

src:源字符首地址(const char*)

n:指定需要追加字符串個(gè)數(shù)(unsigned int)

返回值(char*):

成功:返回dest字符串的首地址

失?。篘ULL

#include

int main()

{

char str[20] = "123";

char src[] = "hello world";

printf("%s\n", strncat(str, src, 5));

}

8.5.5 strcmp()

strcmp? (s1, s2);

功能:比較? s1 和 s2 的大小,比較的是字符ASCII碼大小。

參數(shù):

s1:字符串1首地址(const char *)

s2:字符串2首地址(const char *)

返回值(int):

相等:0

大于:>0 在不同操作系統(tǒng)strcmp結(jié)果會不同? 返回ASCII差值

小于:<0

#include

#include

int main()

{

char str1[] = "hello world";

char str2[] = "hello mike";

if (strcmp(str1, str2) == 0)

printf("str1==str2\n");

else if

(strcmp(str1, str2) >0)

printf("str1>str2\n");

else

printf("str1

}

8.5.6 strncmp()

strcmp? (s1, s2, n);

功能:比較? s1 和 s2 前n個(gè)字符的大小,比較的是字符ASCII碼大小。

參數(shù):

s1:字符串1首地址(const char *)

s2:字符串2首地址(const char *)

n:指定比較字符串的數(shù)量(unsigned int)

返回值(int):

相等:0

大于:>0

小于:<0

#include

#include

int main()

{

char str1[] = "hello world";

char str2[] = "hello mike";

if (strncmp(str1, str2, 5) == 0)

printf("str1==str2\n");

else if (strcmp(str1, "hello world") >0)

printf("str1>str2\n");

else

printf("str1

}

8.5.7 strchr()

strchr(s, c);

功能:在字符串s中查找字母c出現(xiàn)的位置

參數(shù):

s:字符串首地址(const char *)

c:匹配字母(字符)(int)

返回值(char*):

成功:返回第一次出現(xiàn)的c地址

失?。篘ULL

#include

#include

int main()

{

char src[] = "ddda123abcd";

char* p = strchr(src, 'a');

printf("p = %s\n", p);

}

如圖所示,第一個(gè)a前面的字符串被省略

8.5.8 strstr()

strstr (haystack, needle);

功能:在字符串haystack中查找字符串needle出現(xiàn)的位置

參數(shù):

haystack:源字符串首地址(const char*)

needle:匹配字符串首地址(const char*)

返回值(char*):

成功:返回第一次出現(xiàn)的needle地址

失?。篘ULL

#include

#include

int main()

{

char src[] = "ddddabcd123abcd333abcd";

char* p = strstr(src, "abcd");

printf("p = %s\n", p);

}

8.5.9 atoi()

atoi (nptr);

功能:atoi()會掃描nptr字符串,跳過前面的空格字符,直到遇到數(shù)字或正負(fù)號才開始做轉(zhuǎn)換,而遇到非數(shù)字或字符 串結(jié)束符('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回返回值。

參數(shù):

nptr:待轉(zhuǎn)換的字符串(const char*)

返回值:成功轉(zhuǎn)換后整數(shù)(int)

類似的函數(shù)有:

l atof():把一個(gè)小數(shù)形式的字符串轉(zhuǎn)化為一個(gè)浮點(diǎn)數(shù)。

l atol():將一個(gè)字符串轉(zhuǎn)化為long類型

8.6 簡單了解C++的string類

C++? 標(biāo)準(zhǔn)庫提供了 string 類類型,支持上述所有的操作,另外還增加了其他更多的功能。我們現(xiàn)在簡單了解一下 C++? 標(biāo)準(zhǔn)庫中的這個(gè)類,現(xiàn)在讓我們先來看看下面這個(gè)實(shí)例:

#include

#include

using namespace std;

int main()

{

string str1 = "Hello";

string str2 = "World";

string str3;

int? len;

// 復(fù)制??? str1 到??? str3

str3 = str1;

cout<< "str3 : "<< str3<< endl;

// 連接??? str1 和??? str2

str3 = str1 + str2;

cout<< "str1 + str2 : "<< str3<< endl;

// 連接后,str3 的總長度

len = str3.size();

cout<< "str3.size() :? "<< len<< endl;

return 0;

}

現(xiàn)在您可能還無法透徹地理解這個(gè)實(shí)例,因?yàn)榈侥壳盀橹刮覀冞€沒有討論類和對象。所以現(xiàn)在您可以只是粗略地看 下這個(gè)實(shí)例,等理解了面向?qū)ο蟮母拍钪笤倩仡^來理解這個(gè)實(shí)例。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標(biāo)題:c語言中字符串詳解-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article26/jcpjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、商城網(wǎng)站自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日韩精品中文字幕有码在线| 一区二区高清中文字幕| 久久精品女人天堂av| 国产av人妻精品一区二| 精品人妻在线中文字幕| 久久热福利视频就在这里| 精品人妻一区二区三区mp4| 国产一区二区三区av网站| 国产日本欧美一区二区三区 | 日韩一区不卡在线观看| 欧美日韩丝袜一区二区| 巨乳人妻一区二区三区| 亚洲欧美国产日韩综合在线| 国产精品呦呦国产精品尤物 | 精品国产熟女成人av| 国产精品黑丝美女91| 囗交囗爆吞精在线视频| 亚洲av日韩av在线不卡一区| 麻豆国产传媒69国产| 欧美一区二区成人精品视频| 男人的天堂免费看看av| 九九热这里只有免费精品| 东京热男人的天堂色狠爱| 国产欧美精品久久三级| 日韩欧美乱码一区二区| 国产精品亚洲视频欧美视频| av丰满人妻一区二区| 91久久福利国产成人精品| 中文字幕一区日韩欧美| 欧美一级特黄大片免色| 国产视频一区二区三区网| 一区二区三区四区毛片| 在线观看后入大屁股| 日韩中文字幕 在线播放| 日韩精品人妻中文字幕满员| 日韩久久精品五月综合| 亚洲av色网在线观看| 亚洲精品中文字幕日本乱码| 亚洲香蕉一级视频在线播放| 人妻在线中文字幕一区| 精品久久久久久久中文字幕|