C语言字符串

 

C语言字符串数组

1、字符串基础函数

注意:字符串必定以\0结尾。3d

Printf(“yang\n”);blog

其中yang为字符串常量,“yang”=‘y’+‘a’+‘n’+‘g’+‘\0’。字符串由不少的字符组成,一般使用字符数组来存储字符串,如char name[10]=“yang”;也能够以printf(name);的形式输出,即经过数组来访问字符串,但会有警告。由于默认状况下,printf函数只接受字符串常量做为参数(对变量并未写明)。内存

字符串的三种写法:字符串

  1. Char name[8]=“yang”;//数组占用了8个字节的存储空间,可是只含有5个字符。
  2. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘\o’};
  3. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘0’};

这三种写法在内存中的表现都是同样的。it

 

Char name[]={‘y’+‘a’};前面不写个数,不是一个字符串,只能说是一个普通的字符数组。ast

char name[]=“yang”;class

Name[1]=‘o’;把字符串的第二个元素值由a改为o。基础

 

2、字符串使用注意点

(1)分析代码,了解\0的做用。

Char name[]=“yang”;

Char name2[]={‘o’+‘k’};

Printf(“name2=%s”,name2);

%s:根据右边的参数,打印字符串(遇到\0为止)

上面代码的打印结果为:okyang

下面是内存状况分析:

 

问1:Char name[]=“y\0ng”;则打印结果为何?(oky)

问2:此时打印name的值,使用%s是多少?Y\0ng仍是y?

(2)Strlen函数

Strlen函数计算字符串的长度(字符数)但不包括\0,是字符数不是字数。好比一个汉字占三个字符。

Strlen(“haha”);//长度为4

Strlen(“哈haha”);//长度为7而不是5

char name[]=“it\0cast”;

Strlen(name);值为2,由于strlen从字符串的地址开始计算,直到遇到\0为止。

假设

Char name[]=“itcast”;

Char name2[]={‘o’+‘k’};

Int size=strlen(name);

此时size的值为8。

(3)练习,编写一个函数char_contains(char str[],char c),若是字符串中包含字符c,则返回1,不然返回0。

Int char_contains(char str[],char c)

{

//遍历整个字符串

For(int i=0,i<strlen(str);i++)

{

If(str[i]==c)

Return 1;

}

Return 0;

}

 

//调用语句

Int result=char_contains(“yang”,‘a’);

//使用while循环

①. While(i<strlen(str))

②. While(str[i]!=‘\0’)

③. While(str[i])

④. Int i=-1;while(str[i++])

 

3、字符串数组

二维字符数组,存储两个字符串数组,每一个的长度为1,下面是两种写法但存储状况是同样的。

Char name[2][10]={“jack”,“rose”};

Char name2[2][10]={

{‘j’+‘a’+‘c’+‘k’+‘\0’},

{‘r’+‘o’+‘s’+‘e’+‘\0’}

}

把rose输出:printf(“%s”,name2[1]);

输出k:printf(“%c”,name2[0][3]);

相关文章
相关标签/搜索