c语言中没有字符串类型
字符串实际就是多个字符连在一起,所有可以用字符数组来存放字符串。
但是使用字符数组输出时需要使用for循环
例如:
这样使用十分不方便,有没有一种简约的方式,让我们一下子就能输出呢?
有但是需要改两个地方!
1.长度要+1
2.末尾要加一个'\0'
然后用 %s(格式化控制符)就可以输出了!
%s输出:字符串的
例如:
比使用for循环简单多了。
简单来说:
字符串:把多个字符连在一起就叫字符串。但是在C语言中要正确正确描述字符串,必须说成:一串以'\0'结尾的字符集合
例:
char str[3] = {'a','b','c'};
只能称之为字符数组,因为无法用%s正确输出
char str[4] = {'a','b','c','\0'};
才能称之为字符串,可以用%s正确输出
字符串定义和赋值的方法
a、用数组表示
第一种:用多个字符赋值
char 数组名[实际长度+1] = { 'a','b','c','\0' };
如:char str[4] = {'a','b','c','\0'};
第二种:
char str[] = {'a','b','c','\0'};//省略长度
如:char str[] = {'a','b','c','\0'};
第三种:
char 数组名[实际长度+1] = "字符串";
例: char str[4] = "abc";
注意:这种方式不需要加\0,编译器自动帮我们加
第四种:
char 数组名[] = "字符串";//省略长度
例: char str[] = "abc";
注意:这种方式不需要加\0,编译器自动帮我们加
b、用指针表示
char *指针变量名 = 字符串常量;
例: char *str = "abc";
注意:数组表示法和指针表示法的区别:
1.数组表示法可以改变里面的值,指针表示法不可以
指针表示法指向的是字符串常量,常量不可改变。
2.数组表示法可以接收用户输入的值,指针表示法不可以
同理:指针表示法指向的是字符串常量,常量不可改变。
3.数组表示法不能用==来判断一个字符串另外一个字符串常量是否相等
( 例:char str[]="abc"; if(str == "abc"))
指针表示法可以用==来判断一个字符串和另外一个字符串常量是否相等strcmp
(例:char *str = "abc"; if(str=="abc"))
比较字符串一般使用字符串比较函数strcmp