字符串与字符串函数

字符串数组的定义

char str[10]; //定义一个字符串数组

字符串数组的初始化

常见的字符串初始化方法有以下几种:

1.char str[20] = "Hi, I am Happy.";

2.char str[] = "Hi, I am Happy.";

3.char str[] = {'H','i',',',' ','I',' ','a','m',' ','H','a','p','p','y','\0'};

4.char *str = "Hi, I am Happy.";

方法2其实是3的语法糖。
方法1中多余地添加上元素个数,容易出现错误。比如:

char str[3] = "abc"; //元素个数应该为4

这里忘记了’\0’的存在。为了避免这样的错误,应该省略元素个数的定义,把对元素计数的工作交给编译器来做。

方法2与方法4的不同在于:相对前者初始化”char 的数组”的内容,后者是利用字符串常量初始化”指向 char 的指针”。字符串常量一般保存在只读的内存区域。《征服C指针》 6.2.7 char 数组的初始化

字符串数组与指针

1.字符串数组

在数组形式str[]中,str是一个地址常量。str不能被修改。可以使用运算符str + 1来表示数组里的下一个元素。然而,不能使用 ++str表示数组里的下一个元素,因为增量运算符只能用在变量前,而不能使用在常量前面。

2.指针

指针形式*str在程序开始执行之后,还需要为指针变量str预留一个存储位置,用来存储字符串的地址。这个变量初始时指向字符串的第一个字符,但是它的值时可以被改变的,可以对它使用增量运算符。

字符串输入与输出

1.字符串输入

1. gets();
2. fgets();
3. scanf();

2.字符串输出

1. puts();
2. fputs();
3. printf();

常见的字符串函数

1. strlen();
2. strcat();
3. strncat();
4. strcmp();
5. strncmp();
6. strcpy();
7. strncpy();