C语言基础(八)字符串
2015-10-26 22:46
295 查看
在C语言中没有字符串类型,是用字符数组末尾加’/0’来表示字符串。
(1)语法:
第一种:char str[实际长度+1] = {‘a’,’b’,’c’,’\0’};
第二种:char str[ ] = {‘a’,’b’,’c’,’\0’};
第三种:char str[实际长度+1]=“abc”;
第四种:char str[ ]=“abc”;
(2)输入:scanf (“%s”,str); gets(str);
输出:printf(“%s”,str); puts(str);
注意:字符串用的格式化控制符是%s;
数组名是一个地址常量,所以用scanf进行输入的时候,只写数组名就可以了不需要加&;
准备输入的时候,数组一定要够长,否则可能会越界,出现未知错误
(3)字符串的三种表示法:
第一种:数组表示法:char str[ ]=“abc”;
第二种:指针表示法:char *str=“abc”;
第三种:常量表示法:”abc”;
(4)数组表示法和指针表示法的区别:
数组表示法可以改变里面的值,指针表示法不可以;
数组表示法可以接受用户输入的值,指针表示法不可以;
数组表示法不可以用==来判断2个字符串是否相等,指针表示法可以。
以上区别的原理:在内存中有一个常量区,用来存放常量,常量区中的内容不允许改变;还有一个栈区,用来存放变量。当用户输入一个char str[ ] = “abc”;时,首先在常量区中开辟一块空间,用来存放“abc”,然后在栈区中开辟一个空间str,再将常量区中的“abc”复制一份到str中。当用户输入char *str = “abc”时,常量区的操作一样,但是栈区中开辟的空间str存放的是常量区中存放“abc”的内存地址。因此,使用指针表示法时,你实际尝试去改变的是常量区中的数值,所以不允许改变。当指针表示法用==判断是否相等的时候,(例:char
*str = ‘abc' str == “abc”),其实两边的值都是内存地址,所以可以用==来判断。
(5)字符串常用函数:
strcmp:常用来表示2个字符串的大小
用法:strcmp(str1,str2);
原理:按照字符串的第一个字母进行比较,如果不等,返回差值;如果相等,则比较第二个字母,如果还相等则继续比较,如果全部相等,返回0
strcpy:将第二个字符串的值复制到第一个字符串,如果第一个字符串有内容,则覆盖
用法:strcpy(str1,str2);
strcat:将第二个字符串的内容接到第一个字符串后面
用法:strcat(str1,str2);
strlen:计算字符串的长度
用法:strlen(str);
(1)语法:
第一种:char str[实际长度+1] = {‘a’,’b’,’c’,’\0’};
第二种:char str[ ] = {‘a’,’b’,’c’,’\0’};
第三种:char str[实际长度+1]=“abc”;
第四种:char str[ ]=“abc”;
(2)输入:scanf (“%s”,str); gets(str);
输出:printf(“%s”,str); puts(str);
注意:字符串用的格式化控制符是%s;
数组名是一个地址常量,所以用scanf进行输入的时候,只写数组名就可以了不需要加&;
准备输入的时候,数组一定要够长,否则可能会越界,出现未知错误
(3)字符串的三种表示法:
第一种:数组表示法:char str[ ]=“abc”;
第二种:指针表示法:char *str=“abc”;
第三种:常量表示法:”abc”;
(4)数组表示法和指针表示法的区别:
数组表示法可以改变里面的值,指针表示法不可以;
数组表示法可以接受用户输入的值,指针表示法不可以;
数组表示法不可以用==来判断2个字符串是否相等,指针表示法可以。
以上区别的原理:在内存中有一个常量区,用来存放常量,常量区中的内容不允许改变;还有一个栈区,用来存放变量。当用户输入一个char str[ ] = “abc”;时,首先在常量区中开辟一块空间,用来存放“abc”,然后在栈区中开辟一个空间str,再将常量区中的“abc”复制一份到str中。当用户输入char *str = “abc”时,常量区的操作一样,但是栈区中开辟的空间str存放的是常量区中存放“abc”的内存地址。因此,使用指针表示法时,你实际尝试去改变的是常量区中的数值,所以不允许改变。当指针表示法用==判断是否相等的时候,(例:char
*str = ‘abc' str == “abc”),其实两边的值都是内存地址,所以可以用==来判断。
(5)字符串常用函数:
strcmp:常用来表示2个字符串的大小
用法:strcmp(str1,str2);
原理:按照字符串的第一个字母进行比较,如果不等,返回差值;如果相等,则比较第二个字母,如果还相等则继续比较,如果全部相等,返回0
strcpy:将第二个字符串的值复制到第一个字符串,如果第一个字符串有内容,则覆盖
用法:strcpy(str1,str2);
strcat:将第二个字符串的内容接到第一个字符串后面
用法:strcat(str1,str2);
strlen:计算字符串的长度
用法:strlen(str);
相关文章推荐
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 在C语言中转换时间的基本方法介绍
- C语言进制转换代码分享