首页 > 代码库 > 字符串

字符串

     字符数组的两种定义方式:

               char c[10] = {‘i’ , ‘P’ , ‘h’ , ‘o’ , ‘n’ , ‘e’}; 

          char c[10] = “iPhone” ;


字符串函数
strlen()计算字符串的长度
strcpy()字符串拷贝
strcat()字符串拼接
strcmp()字符串比较
 
sizeof与strlen比较(size_t即unsigned long)

sizeof获取操作数占用的内存空间字节数,返回类型size_t;

strlen获取字符数组实际使用的字节数,不包含数组结尾符‘\0‘,返回类型size_t;

 


    字符串的初始化

l      char a[] = “123”;  和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小
l   “123”其实是由’1’、’2’、’3’、’\0’组成
l   “123”的存储分布
      字符串的输出”%s”,’\0’是不会输出的  

 \0的ASCII码值是0,都是字符串(例:"jack" == ‘j‘ + ‘a‘ + ‘c‘ + ‘k‘ + ‘\0‘)
    char name[8] = "it";
    char name2[8] = {‘i‘, ‘t‘, ‘\0‘};
    char name3[8] = {‘i‘, ‘t‘, 0};
    char name4[8] = {‘i‘, ’t‘};
不算是一个字符串(只能说是一个字符数组)
    char name5[] = {‘i‘, ‘t
’};

\0作用
1、字符串结束的标记
2、printf("%s", name2); 
 会从name2这个地址开始输出字符,直到遇到\0为止
char name[] = "itc\0ast”;
输出只是itc
char name2[] = {‘o‘, ‘k’};
printf("%s\n", &name2[1]);
输出:kitc


 strlen函数:计算字符串长度
 1.计算的是字符数,并不是字数。一个汉字算作3个字符
 2.计算的字符不包括\0
 3.从某个地址开始数字符的个数,直到遇到\0为止

输入字符串:scanf("%s", str);
输入字符串(错误):
//    do
//    {
//        scanf("%c",&str[i]);
//    }while (str[i++]!=‘\n‘);
 因为相当于在输入时将回车也输入
字符串数组:
初始化:
char names[2][10] = { {‘J‘,‘a‘,‘y‘,‘\0‘}, {‘J‘,‘i‘,‘m‘,‘\0‘} };  
char names2[2][10] = { {"Jay"}, {"Jim"} }; 
char names3[2][10] = { "Jay", "Jim" };
 

putchar输出一个字符
getchar输入一个字符

字符串