C 语言字符串
在C语言编程中,字符串是以null字符\0结束的字符序列。
当编译器遇到用双引号引起来的字符序列\0时,默认情况下会在末尾附加一个空字符。
声明字符串的方法如下:
char s[5];
C语言编程中的字符串声明
在这里,我们声明了一个5个字符的字符串。
char c[] = “abcd”;
char c[50] = “abcd”;
char c[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘\0’};
char c[5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘\0’};
C语言编程中字符串的初始化
char c[5] = “abcde”;
在这里,我们尝试将6个字符(最后一个字符是’\0’)分配给char具有5个字符的数组。这是错误的做法,您永远不要这样做。
给字符串赋值
C语言中数组和字符串一旦声明,它们就不支持赋值运算符。
char c[100];
c = “C programming”; // 错误! 数组类型不可分配。
从用户处读取字符串
可以使用scanf()函数读取字符串。
scanf()函数读取字符序列,直到遇到空格(空格,换行符,制表符等)。
例如:scanf()读取字符串
#include <stdio.h>
int main()
{
char name[20];
printf(“输入姓名: “);
scanf(”%s”, name);
printf(“你的名字是 %s.”, name);
return 0;
}
输出结果
输入姓名: Dennis Ritchie
你的名字是 Dennis.
即使在上面的程序中输入了Dennis Ritchie,名称字符串中也只有“Dennis”。因为Dennis后面有个空格。
如何读取一行文字?
您可以使用该fgets()函数读取一行字符串。并且,您可以puts()用来显示字符串。
例如:fgets()和puts()
#include <stdio.h>
int main()
{
char name[30];
printf("输入姓名: ");
fgets(name, sizeof(name), stdin); //读取字符串
printf("姓名: ");
puts(name); //显示字符串
return 0;
}
输出结果
输入姓名: Tom Hanks
姓名: Tom Hanks
在这里,我们已使用fgets()函数从用户读取字符串。
fgets(name, sizeof(name), stdlin); //读取字符串
sizeof(name)的结果是30。因此,我们可以接受最多30个字符作为输入,这是name字符串的大小。
为了打印字符串,我们使用了put (name);
将字符串传递给函数
字符串可以通过类似于数组的方式传递给函数。了解有关将数组传递给函数的更多信息。
例如:将字符串传递给函数
#include <stdio.h>
void displayString(char str[]);
int main()
{
char str[50];
printf("Enter string: ");
fgets(str, sizeof(str), stdin);
displayString(str); //将字符串传递给函数
return 0;
}
void displayString(char str[])
{
printf("字符串输出: ");
puts(str);
}
字符串和指针
类似于数组,字符串名称“衰减”到指针。因此,您可以使用指针来操作字符串的元素。
例如:字符串和指针
#include <stdio.h>
int main(void) {
char name[] = “Harry Potter”;
printf(“%c”, *name); // 输出: H
printf(“%c”, *(name+1)); // 输出: a
printf(“%c”, *(name+7)); // 输出: o
char *namePtr;
namePtr = name;
printf(“%c”, *namePtr); // 输出: H
printf(“%c”, *(namePtr+1)); // 输出: a
printf(“%c”, *(namePtr+7)); // 输出: o
}
常用的字符串函数
strlen() -计算字符串的长度
strcpy() -将字符串复制到另一个
strcmp() -比较两个字符串
strcat() -连接两个字符串
C 语言字符串函数
strlen() 计算字符串的长度
strcpy()将一个字符串复制到另一个字符串
strcat() 连接(拼接)两个字符串
strcmp() 比较两个字符串
strlwr() 将字符串转换为小写
strupr() 将字符串转换为大写
字符串处理函数在"string.h"头文件下定义。
#include <string.h>
注意:您必须包含以上代码才能运行字符串处理函数。
gets()和puts()
函数gets()和puts()是两个字符串函数,用于接收用户的字符串输入并分别显示它们
#include<stdio.h>
int main()
{
char name[30];
printf("输入姓名: ");
gets(name); //函数从用户处读取字符串。
printf("姓名: ");
puts(name); //函数来显示字符串
return 0;
}
注意:尽管gets()和puts()函数处理字符串,但这两个函数都在"stdio.h"头文件中定义。
C 语言 gets()和puts()
gets()和puts()在头文件stdio.h中声明。这两个函数用于字符串的输入/输出操作。
C gets()函数
gets()函数使用户可以输入一些字符,然后按Enter键。 用户输入的所有字符都存储在字符数组中。 空字符将添加到数组以使其成为字符串。 gets()允许用户输入以空格分隔的字符串。 它返回用户输入的字符串。
声明
char[] gets(char[]);
使用gets()读取字符串
例如:
#include<stdio.h>
void main(){
char s[30];
printf("输入字符串? ");
gets(s);
printf(“You entered %s”,s);
}
输出结果
输入字符串?
www.cainiaojc.com
您输入 www.cainiaojc.com
使用gets()函数是有风险的,因为它不执行任何数组绑定检查,并一直读取字符,直到遇到新行(enter)。它会受到缓冲区溢出的影响,这可以通过使用fgets()来避免。fgets()确保读取的字符不超过最大限制。
#include<stdio.h>
void main()
{
char str[20];
printf(“输入字符串? “);
fgets(str, 20, stdin);
printf(”%s”, str);
}
输出结果
输入字符串? www.cainiaojc.com 基础教程网
www.cainiaojc.com 基础
C puts()函数
puts()函数与printf()函数非常相似。puts()函数用于在控制台上打印字符串,之前使用get()或scanf()函数读取该字符串。函数的作用是:返回一个整数值,表示在控制台上打印的字符数。由于它使用字符串打印额外的换行字符,从而将光标移动到控制台上的新行,所以puts()返回的整数值总是等于字符串中出现的字符数加1。
声明
int puts(char[])
#include<stdio.h>
#include <string.h>
int main(){
char name[50];
printf("输入你的名字: ");
gets(name); //从用户处读取字符串
printf("你的名字是: ");
puts(name); //显示字符串
return 0;
}
输出:
输入你的名字: Seagull Li
你的名字是: Seagull Li