字符串

09-字符串

五大區(qū):
棧區(qū):存儲(chǔ)局部變量
靜態(tài)區(qū)(全局區(qū)):靜態(tài)變量,全局變量
堆區(qū):存放由程序員調(diào)用malloc函數(shù)時(shí)分配的空間
文字常量區(qū):常量字符串(內(nèi)容只讀只损,不可更改)
代碼二進(jìn)制區(qū):代碼

include <stdio.h>

include <string.h>

void test1()
{
/*
字符數(shù)組:由多個(gè)字符構(gòu)成
字符串:由多個(gè)字符構(gòu)成,最后一個(gè)字符必須要是\0

 */
//1.
char string[10]={'a','b','c'};


//2.
char string1[10]={"hello"};

//3.hello存在文字常量區(qū)绪爸,但是string這個(gè)字符串存在棧區(qū)舶掖,對(duì)文字常量區(qū)的內(nèi)容進(jìn)行了一份拷貝玛臂,所以可以修改string字符串里面的變量
char string2[10]="hello";

string2[2]='m';

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

//4.在棧區(qū)定義了一個(gè)p指針指向了文字常量區(qū)的內(nèi)容前域,所以辕近,不可以使用p對(duì)文字常量區(qū)的內(nèi)容進(jìn)行更改
char *p="hello";

p=p+4;

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


char *q="hello";

printf("p=%p\\nq=%p\\n",p,q);

}
void test2()
{
/*
MAC:先定義變量分配大的內(nèi)存,后定義的變量分配的小的內(nèi)存
*/

char string1[3]={'o','k'};
char string[2]={'h','e'};

int i=0;
for (i=0; i<2; i++)
{
    printf("string[%d]的地址=%p\\n",i,string+i);
}

for (i=0; i<3; i++)
{
    printf("string1[%d]的地址=%p\\n",i,string1+i);
    
}
printf("string=%s\\n",string);

}

//字符串處理函數(shù)

/*字符串長度計(jì)算

strlen()函數(shù)只會(huì)計(jì)算\0,之前的字符匿垄,不包括\0
*/
void test3()
{

char str[10]="hello";
long int length=strlen(str);
printf("length=%ld\\n",length);

}

/*

字符串拷貝函數(shù)

strcpy()將右邊的字符串拷貝到左邊的字符串里移宅,而不是覆蓋原來的一小部分
注意的問題:
(1)左邊字符串的大小必須要大于右邊字符串的大小
(2)左邊的字符串不能是使用char *p定義出來的;
*/

void test4()
{
char string1[10]="hello";
char string2[10]="worlddd";
strcpy(string2, string1);
printf("string2=%s\n",string2);
}

/*

字符串比較函數(shù)

strcmp(string1,string2);
如果兩個(gè)字符串相同椿疗,結(jié)果為0
如果編譯器比較高級(jí)
如果左邊的字符串>右邊的字符串吞杭,結(jié)果是(左邊的不同的字符ASCII值-右邊對(duì)應(yīng)位上的字符ASCII值)
左邊<右邊,結(jié)果是(左邊的不同的字符ASCII值-右邊對(duì)應(yīng)位上的字符ASCII值)

如果編譯器比較落后
左邊>右邊变丧,結(jié)果是=1
左邊<右邊,結(jié)果是=-1
*/

void test5()
{
char string1[10]="hellaff";
char string2[6]="hellc";
int result=strcmp(string1, string2);
printf("result=%d\n",result);

}
/*
字符串連接函數(shù)
strcat()將右邊的字符串拼接到左邊的字符串后面
注意的問題:
(1)左邊的字符串足夠大
(2)左邊的字符串不能是使用char *p定義出來的绢掰;
*/

void test6()
{
char string1[20]="helloxx";
char string2[]="world";
strcat(string1, string2);
printf("string1=%s\n",string1);
}

/*
自己寫一個(gè)函數(shù)實(shí)現(xiàn)strlen的功能
size_t strlen(const char *__s);

*/

//"hello"
int mystrlen(const char string)
{
int length=0;
while (
string!='\0')
{
length++;
string++;
}
return length;
}
/*

寫一個(gè)函數(shù)實(shí)現(xiàn)strcpy

mystrcpy()
char *strcpy(char *__dst, const char *__src);
*/

//str2[10]="hello\0"
//str1[10];

void myStrcpy(char *str1,const char *str2,int size)
{

if(size<strlen(str2))
{
    printf("你越界了\\n");
    return;
}
while (*str2!=0)
{
    *str1=*str2;
    str1++;
    str2++;
}
*str1='\\0';

}

/*
strncmp()比較具體個(gè)數(shù)的字符
*/

void test7()
{
char str[20]="hellonihao";
char str1[20]="helloworld";

int result=strncmp(str1, str, 5);
printf("result=%d\\n",result);

}
/*
strncpy()替換字符串前面的具體數(shù)目的字符
*/
void test8()
{
char str[20]="hellonihao";
strncpy(str, "wang", 4);
printf("str=%s\n",str);

}

/*
strncat()
*/
void test9()
{
char str[20]="hellonihao";
char str1[10]="worldxxx";
strncat(str, str1, 5);
printf("str=%s\n",str);
}

/*
輸入字符串
*/

/*
晚上作業(yè):
寫一個(gè)函數(shù)能吸收空格的
zhang san
string=zhang san
*/
void test10()
{
char string[10];
scanf("%s",string);
printf("string=%s====\n",string);
}

int main()
{
//字符串?dāng)?shù)組
//1.
// char str[2][3]={"hello","world"};

//2.指針數(shù)組 
char *p="1,2,3";
char *p1="nihao";
char *str1[2]={p,p1};
printf("p=%s\\n",str1[0]);

return 0;

}

//
// main.c
// 10-字符串?dāng)?shù)組
//
// Created by ccj on 2016/10/20.
// Copyright ? 2016年 ccj. All rights reserved.
//

include <stdio.h>

include <string.h>

int main()
{

//字符串?dāng)?shù)組
//1.
char str[2][10]={"hello","world"};

//2.指針數(shù)組
char *p="123";
char *p1="nihao";
char *str1[2]={p,p1};//char *str1[2]={"123","nihao"};
printf("p=%s\\n",str1[0]);
strcpy(str1[0], "ccj");







return 0;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痒蓬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滴劲,更是在濱河造成了極大的恐慌攻晒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件班挖,死亡現(xiàn)場離奇詭異鲁捏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)萧芙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門给梅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人双揪,你說我怎么就攤上這事动羽。” “怎么了渔期?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵运吓,是天一觀的道長渴邦。 經(jīng)常有香客問我,道長拘哨,這世上最難降的妖魔是什么谋梭? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮倦青,結(jié)果婚禮上瓮床,老公的妹妹穿的比我還像新娘。我一直安慰自己姨夹,他們只是感情好纤垂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磷账,像睡著了一般峭沦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逃糟,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天吼鱼,我揣著相機(jī)與錄音,去河邊找鬼绰咽。 笑死菇肃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的取募。 我是一名探鬼主播琐谤,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼玩敏!你這毒婦竟也來了斗忌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤旺聚,失蹤者是張志新(化名)和其女友劉穎织阳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰粹,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唧躲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碱璃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弄痹。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嵌器,靈堂內(nèi)的尸體忽然破棺而出界酒,到底是詐尸還是另有隱情,我是刑警寧澤嘴秸,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布毁欣,位于F島的核電站庇谆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凭疮。R本人自食惡果不足惜饭耳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望执解。 院中可真熱鬧寞肖,春花似錦、人聲如沸衰腌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽右蕊。三九已至琼稻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饶囚,已是汗流浹背帕翻。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萝风,地道東北人嘀掸。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像规惰,于是被迫代替她去往敵國和親睬塌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容