首页 > 其他分享 >C语言字符串的常用操作

C语言字符串的常用操作

时间:2023-07-29 21:03:16浏览次数:33  
标签:常用 函数 C语言 char str 字符串 world hello

C语言是一种非常流行的编程语言,它支持各种数据类型,包括整数、浮点数、字符和字符串等。在 C语言中,字符串是一种特殊的数据类型,它由一系列字符组成,以\0字符结尾。本文将介绍 C语言中字符串的相关知识,包括字符串的定义、初始化、赋值、输入输出、比较、拼接、查找和替换等。

一、字符串的定义和初始化

在 C语言中,字符串可以使用字符数组来定义和表示。例如,我们可以使用以下语句来定义一个字符串变量:

char str[20];

上述语句定义了一个长度为 20 的字符数组 str,用来存储字符串。我们可以使用以下语句来初始化字符串:

char str[] = "hello world";

上述语句定义了一个字符数组 str,并使用字符串字面量"hello world"来初始化该数组。在 C语言中,字符串字面量是由一系列字符组成的常量,以\0字符结尾。例如,字符串"hello world"由 11 个字符组成,其中包括 10 个可见字符和 1 个\0字符。

二、字符串的赋值

在 C语言中,我们可以使用 strcpy 函数来将一个字符串赋值给另一个字符串。strcpy 函数的原型如下:

char *strcpy(char *dest, const char *src);

其中,dest 是目标字符串,src 是要复制的字符串。strcpy 函数将 src 字符串复制到 dest 字符串中,并返回 dest 字符串的地址。例如:

char str1[20];
char str2[] = "hello world";
strcpy(str1, str2);
printf("复制后的字符串为:%s\n", str1);

在以上代码中,我们首先定义了一个空的字符数组 str1 和一个字符串"hello world"。接着,使用 strcpy 函数将字符串 str2 复制到字符串 str1 中,并输出复制后的字符串。

三、字符串的输入输出

在 C语言中,我们可以使用 printf 函数和 scanf 函数来输入和输出字符串。输出字符串时,需要使用%s转换说明符;输入字符串时,需要使用%s格式化字符串。

例如:

char str[20];
printf("请输入一个字符串:");
scanf("%s", str);
printf("你输入的字符串为:%s\n", str);

在以上代码中,我们使用 scanf 函数输入一个字符串,并使用 printf 函数输出该字符串。

四、字符串的比较

在 C语言中,我们可以使用 strcmp 函数来比较两个字符串的大小。strcmp 函数的原型如下:

int strcmp(const char *s1, const char *s2);

其中,s1 和 s2 是要比较的字符串。如果 s1 大于 s2,返回一个正数;如果 s1 小于 s2,返回一个负数;如果 s1 等于 s2,返回 0。例如:

char str1[] = "hello";
char str2[] = "world";
int result = strcmp(str1, str2);
if(result > 0) {
    printf("%s大于%s\n", str1, str2);
} else if(result < 0) {
    printf("%s小于%s\n", str1, str2);
} else {
    printf("%s等于%s\n", str1, str2);
}

在以上代码中,我们首先定义了两个字符串"hello"和"world"。接着,使用 strcmp 函数比较两个字符串的大小,并输出比较结果。

五、字符串的拼接

在 C语言中,我们可以使用 strcat 函数来将一个字符串拼接到另一个字符串的末尾。strcat 函数的原型如下:

char *strcat(char *dest, const char *src);

其中,dest 是目标字符串,src 是要拼接的字符串。strcat 函数将 src 字符串拼接到 dest 字符串的末尾,并返回 dest 字符串的地址。例如:

char str1[20] = "hello";
char str2[] = "world";
strcat(str1, str2);
printf("拼接后的字符串为:%s\n", str1);

在以上代码中,我们首先定义了一个字符串"hello"和一个字符串"world"。接着,使用 strcat 函数将字符串"world"拼接到字符串"hello"的末尾,并输出拼接后的字符串。

六、字符串的查找和替换

在 C语言中,我们可以使用 strchr 函数来查找一个字符在字符串中第一次出现的位置。strchr 函数的原型如下:

char *strchr(const char *s, int c);

其中,s 是要查找的字符串,c 是要查找的字符。strchr 函数返回字符 c 在字符串 s 中第一次出现的位置,如果字符 c 在字符串 s 中不存在,则返回 NULL。例如:

char str[] = "hello world";
char *p = strchr(str, 'o');
if(p != NULL) {
    printf("字符o在字符串中第一次出现的位置为:%d\n", p - str);
} else {
    printf("字符o不存在\n");
}

在以上代码中,我们首先定义了一个字符串"hello world"和一个字符'o'。接着,使用 strchr 函数查找字符'o'在字符串中第一次出现的位置,并输出该位置。

在 C语言中,我们还可以使用 strstr 函数来查找一个字符串在另一个字符串中第一次出现的位置。strstr 函数的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子串。strstr 函数返回字符串 s2 在字符串 s1 中第一次出现的位置,如果字符串 s2 在字符串 s1 中不存在,则返回 NULL。例如:

char str[] = "hello world";
char sub[] = "world";
char *p = strstr(str, sub);
if(p != NULL) {
    printf("字符串%s在字符串%s中第一次出现的位置为:%d\n", sub, str, p - str);
} else {
    printf("字符串%s不存在\n", sub);
}

在以上代码中,我们首先定义了一个字符串"hello world"和一个子串"world"。接着,使用 strstr 函数查找子串"world"在字符串"hello world"中第一次出现的位置,并输出该位置。

在 C语言中,我们可以使用 strrchr 函数来查找一个字符在字符串中最后一次出现的位置。strrchr 函数的原型与 strchr 函数相同,只不过 strrchr 函数查找的是字符在字符串中最后一次出现的位置。例如:

char str[] = "hello world";
char *p = strrchr(str, 'o');
if(p != NULL) {
    printf("字符o在字符串中最后一次出现的位置为:%d\n", p - str);
} else {
    printf("字符o不存在\n");
}

在以上代码中,我们首先定义了一个字符串"hello world"和一个字符'o'。接着,使用 strrchr 函数查找字符'o'在字符串中最后一次出现的位置,并输出该位置。

在 C语言中,我们还可以使用 strtok 函数将一个字符串按照指定的分隔符分成若干个子串。strtok 函数的原型如下:

char *strtok(char *s, const char *delim);

其中,s 是要分割的字符串,delim 是分隔符。strtok 函数第一次调用时,s 指向要分割的字符串,函数返回 s 中第一个不包含分隔符的子串;之后每次调用时,s 应该设为 NULL,函数返回 s 中下一个不包含分隔符的子串,直到所有子串都被分割完为止。例如:

char str[] = "hello,world,!";
char *p = strtok(str, ",");
while(p != NULL) {
    printf("%s\n", p);
    p = strtok(NULL, ",");
}

在以上代码中,我们首先定义了一个字符串"hello,world,!",并使用逗号作为分隔符。接着,使用 strtok 函数将字符串按照逗号分割成若干个子串,并逐个输出这些子串。

在 C语言中,我们可以使用 strstr 函数来查找一个字符串在另一个字符串中第一次出现的位置。strstr 函数的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子串。strstr 函数返回字符串 s2 在字符串 s1 中第一次出现的位置,如果字符串 s2 在字符串 s1 中不存在,则返回 NULL。例如:

char str[] = "hello world";
char sub[] = "world";
char *p = strstr(str, sub);
if(p != NULL) {
    printf("字符串%s在字符串%s中第一次出现的位置为:%d\n", sub, str, p - str);
} else {
    printf("字符串%s不存在\n", sub);
}

在以上代码中,我们首先定义了一个字符串"hello world"和一个子串"world"。接着,使用 strstr 函数查找子串"world"在字符串"hello world"中第一次出现的位置,并输出该位置。

七、字符串的常用函数

在 C语言中,有很多与字符串相关的函数。下面我们列举一些常用的字符串函数及其用法:

1、strcpy函数

strcpy 函数用于将一个字符串复制到另一个字符串中。strcpy 函数的原型如下:

char *strcpy(char *dest, const char *src);

其中,dest 是目标字符串,src 是源字符串。strcpy 函数将源字符串复制到目标字符串中,并返回目标字符串的地址。例如:

char src[] = "hello world";
char dest[20];
strcpy(dest, src);
printf("复制后的字符串为:%s\n", dest);

在以上代码中,我们首先定义了一个源字符串"hello world"和一个目标字符串 dest。接着,使用 strcpy 函数将源字符串复制到目标字符串中,并输出复制后的字符串。

2、strcat函数

strcat 函数用于将一个字符串追加到另一个字符串的末尾。strcat 函数的原型如下:

char *strcat(char *dest, const char *src);

其中,dest 是目标字符串,src 是源字符串。strcat 函数将源字符串追加到目标字符串的末尾,并返回目标字符串的地址。例如:

char dest[20] = "hello";
char src[] = "world";
strcat(dest, src);
printf("追加后的字符串为:%s\n", dest);

在以上代码中,我们首先定义了一个目标字符串"hello"和一个源字符串"world"。接着,使用 strcat 函数将源字符串追加到目标字符串的末尾,并输出追加后的字符串。

3、strlen函数

strlen 函数用于计算一个字符串的长度。strlen 函数的原型如下:

size_t strlen(const char *s);

其中,s 是要计算长度的字符串。strlen 函数返回字符串的长度。例如:

char str[] = "hello world";
printf("字符串的长度为:%d\n", strlen(str));

在以上代码中,我们首先定义了一个字符串"hello world"。接着,使用 strlen 函数计算该字符串的长度,并输出结果。

4、strcmp函数

strcmp 函数用于比较两个字符串的大小。strcmp 函数的原型如下:

int strcmp(const char *s1, const char *s2);

其中,s1 和 s2 是要比较的两个字符串。strcmp 函数返回一个整数,表示两个字符串的大小关系。如果 s1 小于 s2,返回一个负整数;如果 s1 等于 s2,返回 0;如果 s1 大于 s2,返回一个正整数。例如:

char str1[] = "hello";
char str2[] = "world";
if(strcmp(str1, str2) < 0) {
    printf("%s在%s之前\n", str1, str2);
} else if(strcmp(str1, str2) == 0) {
    printf("%s与%s相等\n", str1, str2);
} else {
    printf("%s在%s之后\n", str1, str2);
}

在以上代码中,我们使用 strcmp 函数比较了两个字符串"hello"和"world"的大小,由于"hello"在字典序上小于"world",因此输出结果为"hello 在 world 之前"。

5、strchr函数

strchr 函数用于在一个字符串中查找指定字符的位置。strchr 函数的原型如下:

char *strchr(const char *s, int c);

其中,s 是要查找的字符串,c 是要查找的字符。strchr 函数返回指向第一个匹配字符的指针,如果没有找到匹配字符,则返回 NULL。例如:

char str[] = "hello world";
char *p = strchr(str, 'o');
if(p) {
    printf("字符o在%s中的位置为:%d\n", str, p - str);
} else {
    printf("%s中未找到字符o\n", str);
}

在以上代码中,我们首先定义了一个字符串"hello world",接着使用 strchr 函数查找其中字符'o'的位置,并输出结果。由于第一个'o'字符在第五个位置,因此输出结果为"字符 o 在 hello world 中的位置为:4"。

6、strstr函数

strstr 函数用于在一个字符串中查找另一个字符串的位置。strstr 函数的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子字符串。strstr 函数返回指向第一个匹配子字符串的指针,如果没有找到匹配子字符串,则返回 NULL。例如:

char str[] = "hello world";
char *p = strstr(str, "world");
if(p) {
    printf("%s中包含子字符串"world"\n", str);
} else {
    printf("%s中不包含子字符串"world"\n", str);
}

在以上代码中,我们首先定义了一个字符串"hello world",接着使用strstr函数查找其中是否包含子字符串"world",并输出结果。由于该字符串中包含子字符串"world",因此输出结果为"hello world中包含子字符串"world""。

7、sprintf函数

sprintf 函数用于将格式化的数据写入一个字符串中。sprintf 函数的原型如下:

int sprintf(char *str, const char *format, ...);

其中,str 是要写入的字符串,format 是格式化字符串。sprintf 函数将格式化的数据写入 str 中,并返回写入的字符数。例如:

char str[50];
int a = 10, b = 20;
sprintf(str, "a = %d, b = %d", a, b);
printf("%s\n", str);

在以上代码中,我们首先定义了一个空字符串 str 和两个整型变量 a 和 b。接着使用 sprintf 函数将格式化的数据"a = 10, b = 20"写入 str 中,并输出结果。

到此为止,我们已经介绍了 C语言中的一些常用字符串函数及其用法。在实际编程中,字符串是非常常用的数据类型,熟练掌握字符串函数的使用对于编写高效、简洁的代码非常重要。

最后,我们再来看一下以下代码:

char str[] = "hello";
str[0] = 'H';
printf("%s\n", str);

这段代码首先定义了一个字符串"hello",然后将其第一个字符'h'改为大写'H',并输出结果。这里涉及到了字符串的一个重要特性——字符串是一个字符数组。在定义一个字符串时,实际上定义的是一个字符数组,字符串函数也都是在对字符数组进行操作。因此,我们可以像操作普通的字符数组一样操作字符串,例如修改其某个字符、获取其长度等。

标签:常用,函数,C语言,char,str,字符串,world,hello
From: https://blog.51cto.com/u_15641375/6895147

相关文章

  • 2.3 HLSL常用函数
    1.基本数学运算函数含义示例图min(a,b)返回a、b中较小的数值mul(a,b)两数相乘用于矩阵计算max(a,b)返回a、b中较大的数值abs(a)返回a的绝对值round(x)返回与x最近的整数sqrt(x)返回x的平方根rsqrt(x)返回x平方根的倒数degregee(x)转换成弧度redians(x)将角度转为弧度制noise(x)噪声......
  • 【C语言趣味教程】(4) 变量:代码注释 | 变量的声明 | 初始化与赋值 | 变量的命名 | 关
    Ⅰ.代码注释(Comment)0x00引入:注释的作用"程序员最讨厌两种人:一种是不写注释的人,一种是让我写注释的人。"相信大家对注释早已有所耳闻,对于注释,C语言有两种注释风格,我们下面会逐个讲解。 但在这之前,我们先来了解了解注释的作用,注释就是用于解释代码的文字的。注释通常用于版本、版......
  • Java之Stream流的常用API
    Java之Stream流的常用APIStream流常见中间方法名称说明Stream<T>filter(Predicate<?superT>predicate)用于对流中的数据进行过滤Stream<T>limit(longmaxSize)获取前几个元素Stream<T>skip(longn)跳过前几个元素Stream<T>distinct()去除流中重复......
  • c语言作业之登录账号
    intmain(){ inti=0; charpassword[20]={0}; for(i=0;i<3;i++) { printf("请输入密码:>"); scanf("%s",password); //if(password=="123456");//err,==不能用来比较两个字符串是否相等,应该使用一个库函数strcmp if(strcmp(password,......
  • 第二章 网络攻击原理与常用方法
    网络攻击概述网络攻击概念网络攻击是指损害网络系统安全属性的危害行为。常见的危害行为由四个基本类型:信息泄露攻击;完整性破坏攻击;拒绝服务攻击;非法使用攻击。网络攻击模型攻击树模型攻击树模型起源于故障树分析方法。故障树分析方法主要用于系统风险分析和系统可靠......
  • 常用直线模组的类型
    目前,直线模组的应用非常广泛,而且直线模组的种类也有很多可以满足每个行业的应用要求,那么常见的直线模组类型有哪些,大家知道吗?1、全封闭滚珠丝杆直线模组:在半封闭式的基础上增加了不锈钢带防尘结构,设计独特美观大方,在体积设计上尽量缩减了产品大小,在最节省空间的前提下将产品的效果......
  • c语言学习第一课
    VS工具提前输入#define_CRT_SECURE_NO_WARNINGS1数据类型char //字符数据类型short//短整型int  //整型long //长整型longlong //更长整型float //单精度浮点数double //双精度浮点数 printf(“%lf\n",d);   lf表示双精度浮点数类型用来向内存申请空间创......
  • VsCode如何配置C语言环境?
    以前学校上C语言课程都是使用VC++6.0上课,这个学期为了复习一遍C语言,而且自己经常使用VSCode开发前端项目,所以为了方便。这里把需要的环境和插件配置在这里介绍一下。Windows环境下安装C语言编译器MinGW-W64GCCC的下载地址为:https://sourceforge.net/projects/mingw-w64/下载......
  • pycharm常用快捷键
    本文详细总结了Pycharm的常用快捷键,下文介绍使用方法和场景,并不需要记忆这些快捷键,你只需要知道有这些快捷键,再需要用的时候查看一下,用的多了自然也就记住了,需要的朋友可以参考下1.注释(添加/消除)(Ctrl+/)这里说下Python的单行注释是#,多行注释是'''注释内容......
  • SpringBoot——常用扩展点
    前言Spring对于每个Java后端程序员来说肯定不陌生,日常开发和面试必备的。本文就来盘点Spring/SpringBoot常见的扩展点,同时也来看看常见的开源框架是如何基于这些扩展点跟Spring/SpringBoot整合的。FactoryBean提起FactoryBean,就有一道“著名”的面试题“说一说FactoryBean和Bean......