字符串

09-字符串

五大区:
栈区:存储局部变量
静态区(全局区):静态变量,全局变量
堆区:存放由程序员调用malloc函数时分配的空间
文字常量区:常量字符串(内容只读,不可更改)
代码二进制区:代码

include <stdio.h>

include <string.h>

void test1()
{
/*
字符数组:由多个字符构成
字符串:由多个字符构成,最后一个字符必须要是\0

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


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

//3.hello存在文字常量区,但是string这个字符串存在栈区,对文字常量区的内容进行了一份拷贝,所以可以修改string字符串里面的变量
char string2[10]="hello";

string2[2]='m';

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

//4.在栈区定义了一个p指针指向了文字常量区的内容,所以,不可以使用p对文字常量区的内容进行更改
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:先定义变量分配大的内存,后定义的变量分配的小的内存
*/

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);

}

//字符串处理函数

/*字符串长度计算

strlen()函数只会计算\0,之前的字符,不包括\0
*/
void test3()
{

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

}

/*

字符串拷贝函数

strcpy()将右边的字符串拷贝到左边的字符串里,而不是覆盖原来的一小部分
注意的问题:
(1)左边字符串的大小必须要大于右边字符串的大小
(2)左边的字符串不能是使用char *p定义出来的;
*/

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

/*

字符串比较函数

strcmp(string1,string2);
如果两个字符串相同,结果为0
如果编译器比较高级
如果左边的字符串>右边的字符串,结果是(左边的不同的字符ASCII值-右边对应位上的字符ASCII值)
左边<右边,结果是(左边的不同的字符ASCII值-右边对应位上的字符ASCII值)

如果编译器比较落后
左边>右边,结果是=1
左边<右边,结果是=-1
*/

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

}
/*
字符串连接函数
strcat()将右边的字符串拼接到左边的字符串后面
注意的问题:
(1)左边的字符串足够大
(2)左边的字符串不能是使用char *p定义出来的;
*/

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

/*
自己写一个函数实现strlen的功能
size_t strlen(const char *__s);

*/

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

写一个函数实现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()比较具体个数的字符
*/

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

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

}
/*
strncpy()替换字符串前面的具体数目的字符
*/
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);
}

/*
输入字符串
*/

/*
晚上作业:
写一个函数能吸收空格的
zhang san
string=zhang san
*/
void test10()
{
char string[10];
scanf("%s",string);
printf("string=%s====\n",string);
}

int main()
{
//字符串数组
//1.
// char str[2][3]={"hello","world"};

//2.指针数组 
char *p="1,2,3";
char *p1="nihao";
char *str1[2]={p,p1};
printf("p=%s\\n",str1[0]);

return 0;

}

//
// main.c
// 10-字符串数组
//
// Created by ccj on 2016/10/20.
// Copyright ? 2016年 ccj. All rights reserved.
//

include <stdio.h>

include <string.h>

int main()
{

//字符串数组
//1.
char str[2][10]={"hello","world"};

//2.指针数组
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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容