字符串

char [ ] = {'H','e','l','l','o','!'};    是字符数组  不是字符串  不能用字符串的方式做运算

char [ ] = {'h','e','l','l','o','!','\0'};    


字符串是以0结尾的一串字符

0标志着字符串的结束 但不是字符串的一部分

计算字符串长度的时候不包括0

字符串以数组的形式存在(不能用运算符对字符串做运算,可以通过数组的方式遍历字符串) ,以数组或指针的方式访问 (更多是以指针的方式)

函数string.h

"Hello"    由双引号扩起来    叫做字符串常量


字符串变量的定义

1 char *str = "Hello";    指针指向一个字符数组

2 char word[] = "Hello";

3 char line [10] = "Hello";


字符串变量

    char* s = "Hello world!";

    s[0] = 'B';       结果错误


    char* s = "Hello world!";

    char* s2 = "Hello world!";    两者prinrf得到的值相同    两个指针指向相同的地址    由于常量所在的地方    s实际上是const char*s 


选择指针还是数组:

    数组:字符串在这里    作为本地变量空间自动回收

    指针:不知道字符串在哪    通常用来处理参数  动态分配空间(malloc)

    如果要构造一个字符串 用数组    处理一个字符串 用指针


字符串的输入输出

    char* string[ ];        易错:只定义了一个指针变量  没有初始化值  容易出错   应使初始值为0

    scanf("%s",string);    scanf读人一个单词  直到遇到空格 tab 回车    scanf不知道读入内容的长度    应该scanf("%数字s",string)    数字表示读取内容的长度  到固定长度不再读取  即不根据回车空格判断

    printf("%s",string);    


空字符串

    char buffer[100] = " ";        buffer[0] == '\0'

    char buffer[ ]=" ";   该数组长度只有1 


字符串数组和指针数组

    char a[ ] [10] 和    char* a[ ] 的区别    前者是创建二维数组   每一行一列字符串    后者是一维指针数组  每一个指针指向一个字符串 


字符串数组和main函数

int main( int argc, char const* argc[ ] )    前面的整数告诉后面的字符串数组有多大    argc[0] 是字符串本身    


单字符输入输出

int putchar(int c)  向标准输出写入一个字符  返回写了几个字符

int getchar (void)  从标准输入读入一个字符  int是为了返回EOF(-1) ctrl+z


SHELL的作用

行编辑 在键盘上输入的内容还没按enter前 都放在shell里


字符串函数 #include

  strlen        返回字符串长度

  strcmp      比较两个字符int strcmp(const char* s1,const char* s2)  返回值 0:s1==s2  1:s1>s2  -1:s1

  strcpy        char* strcpy(char *restrict dst,const char *restrict src)        把src的字符串拷贝到dst空间里    src和dst不重叠

                    char* dst = (char*)  (强制类型转换)malloc( strlen(src)+1 );    (读取字符串长度+1  \0)

                    strcpy(dst,src);


                    数组版本:

                     char*   mycpy(char* dst, char*src){

                     int idx = 0;

                     while (src [ idx ] ){

                              dst [ idx ] = src [ idx ];

                              idx++;

                             }

                     dst [ idx ] = ' \0 ';

                      return dst;

                      }          


                        char* ret = dst;

                       while ( *src != '\0'){                    简化                   while( *src )                                        最终版本  while (*dst++ = *src++ )

                                        *dst = *src;                                        *dst++ = *src++;

                                         dst ++;

                                          src ++;

                            }

                        return ret;

  strcat

  strchr

  strstr

你可能感兴趣的:(字符串)