轻松学习字符串
【摘要】 字符串非常重要的一个内容,写一篇学习文章。
字符串基本概念
1.字符串是由若干字符组成的序列。
例如:“love”,“strong”,“1397095”,"%d\n"等,都是合法的字符串。
2.用双引号引起来的就是字符串,字符串由字符组成
3.字符串使用%s格式化输出
# include"stdio.h"
# include"string.h"
main()
{
char str[11],str1[100];
char str2[]={"and strong"};
scanf ("%s",str);
printf ("%s\n",str);
gets (str1); //gets也可以输入一个字符串
puts (str1); //puts可以输出一个字符串
printf ("%s\n",strcat(str1,str2)); //strcat(字符数组1,字符数组2),strcat函数连接
//两个字符数组中的子符串,字符串2链接到字符串1后面,结果放在字符数组1中。
strcpy(str,str1); //字符串拷贝函数strcpy
puts(str);
printf ("%d\n",strcmp(str1,str2));//字符串比较函数strcmp
printf ("%d\n",strcmp(str2,str1));
printf ("%d\n",strlen(str1));// strlen求字符串长度
printf ("%d\n",strupr(str1));// strlwr字符串转成大写
strncpy(str1,str2,4);//复制字符串2中前面4个字符到数组1中,
//取代str1中前4个字符。
puts(str);
}
4.字符串以\0结尾,没有\0就不是字符串
5.只要是用双引号括起来的都是字符串
6.字符串的本质就是数组,一个一维数组对应一个字符串。
例如:
main()
{
char str[11]= "Prosperous";
printf("%s\n",str);
}
7.在C语言中,字符串由一个结束标志,即ASCII码为0的字符(空白符)。C语言在处理字符串时从指定位置开始遇到的一个空白符为止。因此,字符数组作为字符串处理时,字符数组在大小上一定要比字符串的长度最少多1。上例中"Prosperous"
有10个字符,定义str时长度为11,比10多了1个。其值如下:
8.最后一个元素的值是’\0’,是字符串的技术标志。输入时系统自动加入,输出时不显示。
字符串操作
- 字符串定义
在普通的字符数组后面加一个\0
就成了字符串
char buff[]="我是一个字符串";
char a[]="123456789";
char b[]="abcdefg";
char c[]={'a','b','c','\0'};
- 字符串大小写转换
函数执行的功能就是将你输入的字符串全部转换成小写和全部转换成大写
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(char *str,int flag);
int main()
{
char buff[100];
printf("从键盘上输入字符串:");
scanf("%s",buff);
printf("源字符串:%s\n",buff);
func(buff,0);
printf("大写转换小写:%s\n",buff);
func(buff,1);
printf("小写转大写:%s\n",buff);
return 0;
}
//函数功能: 大写小写转换
//flag=0表示大写转换小写 =1表示小写转大写
void func(char *str,int flag)
{
int data;
while(*str!='\0')
{
if(flag)
{
if(*str>='a'&& *str<='z') //小写
{
*str=*str-32;
}
}
else
{
if(*str>='A'&& *str<='Z') //小写
{
*str=*str+32;
}
}
str++;
}
}
- 字符串删除
从键盘上录入一个字符串,删除字符串里指定的单词,输出结果。
比如:原字符串”abcdef123abcdef123abcdef123”
删除单词:“123”
输出的结果:”abcdefabcdefabcdef”
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100];
char str2[100];
int i=0,j=0;
int str2_len=0;
/*1. 录入数据*/
printf("输入源字符串:");
scanf("%s",str1);
printf("输入要删除的字符串:");
scanf("%s",str2);
/*2. 计算要删除字符串的长度*/
str2_len=strlen(str2);
/*3. 查找字符串*/
for(i=0;str1[i]!='\0';i++)
{
//比较字符串
for(j=0;str2[j]!='\0';j++)
{
if(str1[i+j]!=str2[j])break;
}
if(str2[j]=='\0')
{
//4. 删除字符串---后面向前面覆盖
for(j=i;str1[j]!='\0';j++)
{
str1[j]=str1[j+str2_len];
}
str1[j]='\0';
i--;
}
}
//5. 输出结果
printf("str1=%s\n",str1);
return 0;
}
- 字符串插入
从键盘上录入一个字符串,从指定位置插入一个字符串,再输出结果。
比如:原字符串“123456789”
从指定位置插入新的单词。 比如从第5个下标插入一个“abc”字符串。
结果: “123abc456789”
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100];
char str2[100];
int addr=0;
int str1_len;
int str2_len;
int i;
/*1. 录入数据*/
printf("录入源字符串:");
scanf("%s",str1);
printf("录入要插入的字符串:");
scanf("%s",str2);
printf("输入要插入的下标位置:");
scanf("%d",&addr);
str1_len=strlen(str1); //3
str2_len=strlen(str2); //2
/*2. 完成插入*/
//完成数据移动
for(i=str1_len-1;i>=addr;i--)
{
str1[i+str2_len]=str1[i];
}
//数据替换
for(i=0;i<str2_len;i++)
{
str1[i+addr]=str2[i];
}
str1[str1_len+str2_len]='\0';
/*3. 输出数据*/
printf("str1=%s\n",str1);
return 0;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)