C 字符串学习笔记

1. 什么是字符串?

在 C 语言中,字符串是由一系列字符组成的字符数组。字符串以 null 字符(\0)结尾,表示字符串的结束。例如:

cCopy Code
char str[] = "Hello, World!";

这里定义了一个字符数组 str,用来存储字符串 "Hello, World!"。注意,在末尾还有一个 null 字符。

2. 字符串的常用操作

2.1 字符串的输入输出

可以使用 printf() 函数来输出字符串,使用 %s 格式化字符串:

cCopy Code
char str[] = "Hello, World!"; printf("字符串为:%s\n", str);

同样地,可以使用 scanf() 函数来输入字符串,使用 %s 格式化字符串:

cCopy Code
char str[100]; printf("请输入字符串:"); scanf("%s", str); printf("输入的字符串为:%s\n", str);

2.2 字符串的长度

可以使用 strlen() 函数来获取字符串的长度,不包括结尾的 null 字符:

cCopy Code
char str[] = "Hello, World!"; int len = strlen(str); printf("字符串长度为:%d\n", len);

2.3 字符串的拷贝

可以使用 strcpy() 函数来将一个字符串复制到另一个字符串中:

cCopy Code
char src[] = "Hello, World!"; // 原字符串 char dest[100]; // 目标字符串 strcpy(dest, src); // 将原字符串复制到目标字符串中

2.4 字符串的连接

可以使用 strcat() 函数将两个字符串连接起来:

cCopy Code
char str1[] = "Hello, "; char str2[] = "World!"; strcat(str1, str2); // 将 str2 连接到 str1 的末尾 printf("连接后的字符串为:%s\n", str1);

2.5 字符串的比较

可以使用 strcmp() 函数来比较两个字符串是否相等:

cCopy Code
char str1[] = "Hello"; char str2[] = "World"; if (strcmp(str1, str2) == 0) { printf("两个字符串相等\n"); } else { printf("两个字符串不相等\n"); }

3. 实例

下面是一个简单的例子,演示了如何从键盘输入一个字符串,并输出该字符串的长度、复制一份、反转以及查找某个字母的位置:

cCopy Code
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100], reverse[100]; char ch; int i, len; printf("请输入一个字符串:"); scanf("%s", str1); len = strlen(str1); printf("字符串长度为:%d\n", len); strcpy(str2, str1); printf("复制后的字符串:%s\n", str2); for (i = 0; i < len; i++) { reverse[i] = str1[len - i - 1]; } reverse[len] = '\0'; printf("反转后的字符串:%s\n", reverse); printf("请输入一个字母:"); scanf(" %c", &ch); for (i = 0; i < len; i++) { if (str1[i] == ch) { printf("%c 在字符串中的位置为 %d\n", ch, i + 1); break; } } return 0; }

上面的程序演示了字符串的基本操作,包括输入输出、长度、复制、反转以及查找指定字符的位置。