关闭

黑马程序员_iOS_C_字符串

34人阅读 评论(0) 收藏 举报

——- android培训java培训、期待与您交流! ———-

1.字符串的基本概念
字符串是位于双引号中的字符序列。
在内存中以“\0“结束,所占字节比实际多一个。

//字符串"abcd"的内存存储情况
 ________________________
|  a |  b | c  |  d | \0 |
|____|____|___ |__ _| ___|

注意:
1)可以把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋值给字符变量。
2)c语言中没有字符串变量,可以用字符数组来存放字符串。

char ch[10] = "abc";

2.字符数组定义
格式:char 数组名[常量表达式]

char ch[10];

字符数组也可以是二维或多维数组
格式:char 数组名[常量表达式1][常量表达式2]

char ch[5][5];

注意:定义字符数组时,应确保数组长度比字符串长度至少多1。

1)一维字符数组的定义
char ch1[10];
2)二维字符数组的定义
char ch2[10][10];

3.字符数组初始化和引用
1)初始化

//定义同时初始化
char ch[4] = {'a','b','c','d'};
char ch[] = {'a','b','c','d'};

char ch[3] = {'a'};//a  \0  \0
char ch[3] = {[3] = 'b'};
//先定义后初始化
char a[3];
a[0] = 'a';
a[1] = 'b';
a[2] = 'c';

2)引用(遍历)
3)字符数组用来保存字符串的
字符数组作用:保存字符和保存字符串

//字符数组保存字符串,末尾保存'\0'
char str[4] = {"abc"};
//str[0] = 'a';
//str[1] = 'b';
//str[2] = 'c';
//str[3] = '\0';
//第二种初始化方法
char str[4] = "abc";//注意,此处数组长度必须大于等于4;
char str[] = "abc"

4.以字符串的形式输入和输出
使用各式字符串为%s,表示输入、输出的是一个字符串。

//%s从给定的地址开始,输出字符直到遇到\0
char ch[] = "abcdefg";
printf("%s",str);
printf("%s",&str[0]);
//%s接收键盘上输入的一个字符串
char str[10];
//从键盘上接受一个字符串,保存在以str为首地址的字符数组中
scanf("%s",str);
//把字符数组以%s的格式输出
printf("%s\n",str);

注意点:
1)如果以%s格式进行输入的话,注意空格问题,如果输入的字符串有空格,则空格之后的字符无法被接受保存。
2)输入字符串的长度要小于字符数组的长度。
5.字符串结束符使用

//定义一个字符串  
char str[] = "abc";
//str[0]   a
//str[1]   b
//str[2]   c
//str[3]   \0
print("%d",sizeof(str));//4
//存的是字符,可以以%s输出
char ch[] = {'a','b','\0'};
printf("%s",ch);

6.字符串长度计算的方法

//字符串的长度
//此处字符串的长度恰好等于数组在内存中占用的字节数
char str[] = "abc";
printf("%d",sizeof(str));//4

char str[] = "abc\0def";
printf("%d",sizeof(str));//8
//专门计算字符串长度的方法
//1)使用字符串函数
//strlen(str)
//2)以'\0'作为条件进行判断,遇到'\0'就结束,'\0'之前就是字符串的长度
//不知道
char str[] = "abcdefghijd";//包含'\0' // 4   不包含'\0'   //3
int i = 0;//int i = 1;包含'\0'
while(str[i]!='\0'){
    i++;
}
printf("%d\n"i);//3

7.字符数组和普通数组的区别
没有本质区别。
1)字符数组元素都是char型。
2)scanf()和printf()函数有一种格式符%s可以用输入输出字符数组。
3)字符数组可以这样初始化:char str[] = “abcdefg”;
8.字符串处理函数
需要到的头文件:”stdio.h”,”string.h”。

//"stdio.h"
//puts()  输出一个字符串(可以自动换行)
printf("%s\n",str);
puts(str);//任意元素地址//不可以格式化输出

//gets()  输入一个字符串
scanf("%s",str);//注意:输入字符串的时候不能有空格
gets(str);//可以接受空格,但是不安全,有越界危险

//"string.h"
//strcat()  连接一个字符串
//strcat(A,B)  将B连接到A后面,会覆盖掉A的\0
//A的长度要足够大
char str1[100] = "aaa";
char str2[] = "bbbbbbb";
//string.h
//strcopy   字符串拷贝函数
//strcopy(oldStr,newStr)    newStr覆盖掉oldStr  
strcopy(str1,str2);//str1要足够大(可能越界)

//strcmp    字符串的比较函数
//规则:比较字符的ascii码值
//逐个字符相比较,出现第一个不相同就开始确定大小
strcmp(str1,str2);//返回值 大于0  str1>str2  等于0  小于0 

//strlen    字符串的长度计算函数
//长度不含\0
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:526次
    • 积分:110
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档