C语言——字符串的基本操作

177 阅读2分钟

C语言——字符串的基本操作

1. 字符和字符串的区别

  • 符号

字符 ‘ ' 单引号

字符串 “ ” 双引号

  • 内容

    字符 单个字符

    字符串 多个字符

  • 输入输出格式

    字符 %c

    字符串 %s

  • 标识

    字符串 \0做结尾

2. 字符串的本质

字符串的本质上就是一个字符串数组

“hello world” 这样的字符串,就是包含其中各个元素的,并且结尾为 \0的一个一维字符数组

如:

char hi[12] = {'H','e','l','l','o',' ','w','o','r','l','d','\0'};

因为一个字符串要有\0 作为结尾,所以字符数组的长度要比本身字符数口多一个

如上例中,字符串有11个,但是字符数组长度要达到12

3. 字符串的应以与初始化

  • 字符串面量

    "hello world"   // 注意:字面量是常量
    
  • 字符数组:

    1.数组形式

    char hi[3] = {'H','i','\0'};
    char hello[] = {'H','e','l','l','o',' ','w','o','r','l','d','\0'};
    

    2.直接赋首地址

    char shool[20] = "第一中学";
    

    3.省略长度

    char name1[] = "Alan";
    char name2[] = {"Alan"};
    

    4.字符指针

    char *name3 = "Alan";
    char *s = "第一中学";
    

4. 字符串遍历

char hi[] = "I am happy";
// 1. for循环遍历
for(int i=0;i<11;i++){
    printf("%c",hi[i]);
}

// 2. 直接输出
printf(hi);

// 3. 字符串格式化输出
printf("%s",hi);

5. 字符串二维数组

// 常见姓名
char name1[] = "张三";
char name2[] = "李四";
char name3[] = "王五";

// 存储多个字符串
// 二维数组
char name[][256] = {"张三","李四","王五"};

// 一维指针数组
char *name[] = {"张三","李四","王五"};

对于printf来说,最重要的是?

# 对于printf和scanf来说,字符串最重要的是其起始地址
# 如打印一个字符串:
- char *test = "hey gays!";

1. printf(test);
2. printf("%s",test);

# 对于printf这个函数而言,只要知道字符串开头的地址,那么就一直打印下去,一直到碰到`\0`的时候停止
# 如:
- printf("Hello \0 world");

6. 常见的字符串操作函数

stdio.h

输入:

scanf();
gets();
getchar();

输出:

printf();
puts();
putchar();

string.h

连接:strcat()

拷贝:strcpy()

比较:strcmp()

获取长度:strlen()

大小写转换:strupr() strlwr()

拼接字符串:sprintf()

测试:

#include "stdio.h"
#include "string.h"


int main(){
	
	char hi[] = "hello";
	char s2[] = "Alice";
	char str[256];
	printf("%s\n",strcat(hi," world")); // 连接
	printf("%s \n",strcpy(str,"come on")); // 拷贝
	printf("%d \n",strcmp("你好","你好")); // 比较
	printf("%d \n",strlen(str)); // 获取长度
	printf("%s \n",strupr(str)); // 转成大写 
	
	return 0;
}