C 编程字符串
C 编程字符串
在本教程中,您将了解 C 编程中的字符串。您将通过示例学习声明、初始化它们并将它们用于各种 I/O 操作。
在C编程中,字符串是一个以空字符结尾的字符序列\0
.例如:
char c[] = "c string";
当编译器遇到用双引号括起来的字符序列时,它会附加一个空字符 \0
默认在最后。
如何声明一个字符串?
声明字符串的方法如下:
char s[5];
<图> 在这里,我们声明了一个 5 个字符的字符串。
如何初始化字符串?
您可以通过多种方式初始化字符串。
char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
<图>
再举一个例子:
char c[5] = "abcde";
在这里,我们尝试分配 6 个字符(最后一个字符是 '\0'
) 到 char
数组有 5 个字符。这很糟糕,你不应该这样做。
给字符串赋值
数组和字符串是 C 中的二等公民;一旦声明,它们不支持赋值运算符。例如,
char c[100];
c = "C programming"; // Error! array type is not assignable.
注意: 使用 strcpy() 函数来复制字符串。
从用户那里读取字符串
您可以使用 scanf()
读取字符串的函数。
scanf()
函数读取字符序列,直到遇到空格(空格、换行符、制表符等)。
示例1:scanf()读取字符串
#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}
输出
Enter name: Dennis Ritchie Your name is Dennis.
尽管丹尼斯·里奇 在上面的程序中被输入,只有 "Dennis" 存储在 name 中 细绳。这是因为 Dennis 后面有一个空格 .
另请注意,我们使用了代码 name 而不是 &name
与 scanf()
.
scanf("%s", name);
这是因为 name 是一个 char
数组,我们知道数组名会衰减为 C 中的指针。
因此,名称 在 scanf()
已经指向字符串中第一个元素的地址,这就是为什么我们不需要使用&
.
如何阅读一行文字?
您可以使用 fgets()
函数读取一行字符串。而且,您可以使用 puts()
显示字符串。
示例 2:fgets() 和 puts()
#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); // read string
printf("Name: ");
puts(name); // display string
return 0;
}
输出
Enter name: Tom Hanks Name: Tom Hanks
在这里,我们使用了 fgets()
从用户那里读取字符串的函数。
fgets(name, sizeof(name), stdlin); // read string
sizeof(name)
结果为 30。因此,我们最多可以输入 30 个字符,即 name 的大小 字符串。
为了打印字符串,我们使用了 puts(name);
.
注意: gets()
函数也可以是从用户那里获取输入。但是,它已从 C 标准中删除。
这是因为 gets()
允许您输入任意长度的字符。因此,可能存在缓冲区溢出。
将字符串传递给函数
字符串可以以与数组类似的方式传递给函数。了解有关将数组传递给函数的更多信息。
示例 3:将字符串传递给函数
#include <stdio.h>
void displayString(char str[]);
int main()
{
char str[50];
printf("Enter string: ");
fgets(str, sizeof(str), stdin);
displayString(str); // Passing string to a function.
return 0;
}
void displayString(char str[])
{
printf("String Output: ");
puts(str);
}
字符串和指针
与数组类似,字符串名称“衰减”为指针。因此,您可以使用指针来操作字符串的元素。我们建议您在检查此示例之前检查 C 数组和指针。
示例 4:字符串和指针
#include <stdio.h>
int main(void) {
char name[] = "Harry Potter";
printf("%c", *name); // Output: H
printf("%c", *(name+1)); // Output: a
printf("%c", *(name+7)); // Output: o
char *namePtr;
namePtr = name;
printf("%c", *namePtr); // Output: H
printf("%c", *(namePtr+1)); // Output: a
printf("%c", *(namePtr+7)); // Output: o
}
常用字符串函数
- strlen() - 计算字符串的长度
- strcpy() - 复制一个字符串到另一个
- strcmp() - 比较两个字符串
- strcat() - 连接两个字符串
C语言