iOS概念入门学习-C语言-字符串

概要:本文介绍了字符串的概念、定义方法和常用的函数,并用实例加以串联以说明字符串的用法。

一、 字符串

1.字符串的概念

字符串是位于双引号中的字符序列。字符串即字符数组。
在内存中以“\0”结束,所占字节比实际多一个
这里写图片描述
注意:
1. 可以把一个字符常量赋给一个字符变量,但不能把字符串常量赋给字符变量
2. C语言中没有字符串变量,可以用字符数组来存放字符串
Printf("hello world!");
Char ch[10]="ab";

2.字符串的定义

定义格式:char 数组名[常量表达式] 
例如:char c[10]; 

字符数组也可以是二维或多维数组。如:
char 数组名[常量表达式1][常量表达式2]
例如:char c[5][10]; 即为二维字符数组。

注意:定义字符数组时,应确保数组长度比字符串长度至少多1(存放’\0’)

3.字符串初始化

1)定义同时进行初始化
char c[5]={'a','b','c','d'};
2)部分初始化
char d[10]={'a','b','c'};
3)先定义再初始化
char e[5];
e[0]='a';
e[1]='b';

二、字符串的使用

1.输入输出

1)printf和scanf

使用printf和scanf进行输入和输出时,需要用到%s占位符,%s 从给定的地址开始,输出字符直到遇到\0结束。应该说明的是,对一个字符数组,如果不做初始化赋值,则必须说明数组长度,还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

    char a[100];
    printf("请输入一个字符串\n");
    scanf("%s",a);
    printf("%s",a);

2)puts和gets

puts在输出字符串时会自动换行,但与printf不同的是,puts不能进行格式化输出。gets相对于scanf来说好处在于gets函数并不以空格为字符串结束输入的标志,而只以回车作为结束标志。

 char f[100];
 gets(f);
 puts(f);

但是scanf和gets缺点就在于若是用户输入了超过数组指定长度的字符串,程序将 报错。

3)fputs和fgets

i) fgets

格式:fgets(数组名,数组长度,stdin)
fgets从输入缓冲区读取一个字符串保存到字符数组中,当输入的字符串的长度大于数组的长度,此时fgets会自动的把数组的最后一个元素变成\0,当输入的字符串的长度小于数组长度的时候,fgets还会接收回车。

ii) fputs

格式:fputs(数组名,stdout);
fputs是不会自动换行,也不能进行格式化的输出,而puts 可以自动换行

4)几种输入输出方式的比较

i) printf和scanf

优点:可以格式化输出。
缺点:printf不能自动换行,scanf中不能有空格

ii) puts和gets

优点:gets可以接受空格
缺点:使用gets会有一个警告,并且当我们输入的字符数大于字符串长度时程序会报错。

iii) fputs和fgets

fgets()、fputs()最大的优点是帮我们自动截取输入的字符串,使得我们对字符串 的存取是安全的。

2.其他字符串处理函数

下面将介绍几个字符串的常用函数,介绍完概念之后,将用一个程序把所有函数的用法表现出来。

1)字符串连接函数 strcat

格式: strcat(字符数组名1,字符数组名2) 

功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志 “\0”。本函数返回值是字符数组1的首地址。
本函数把初始化赋值的字符数组与动态赋值的字符串连接起来。要注意的是,字符数组1应定义足够的长度,否则不能全部装入被连接的字符串。

2)字符串拷贝函数strcpy

格式: strcpy(字符数组名1,字符数组名2) 

功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“\0”也一同拷贝。字符数名2, 也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
本函数要求字符数组1应有足够的长度,否则不能全部装入所拷贝的字符串。

3)字符串比较函数strcmp

格式: strcmp(字符数组名1,字符数组名2) 

比较规则:
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
如果两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”,还要特别注意:小写字母比大写字母“大”。
返回值:
- (1)字符串1=字符串2,返回0
- (2)字符串1>字符串2,返回一个正整数
- (3)字符串1<字符串2,返回一个负整数。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。

实例如下:
这里写图片描述

总结:字符串是一种日常编程经常会用到的类型,可以用来存储各种信息,并对信息做一些处理,掌握好常用字符串函数,对于日后的编程学习很有用处!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章