[算法]试剖析字符串

[算法]试剖析字符串,第1张

[算法]试剖析字符串

前言

字符串,就是一堆字符串在一起,形象点就是字符数组,在c中字符串可以和字符数组划等号,但在c++中有专门的string(字符串型)来定义字符串。

目录
  • 一、字符串基础
    • 1.字符串的输入
  • 2.字符串的输出
  • 3.字符串的遍历
    • (1)strlen()函数
    • (2)while循环
  • 二、字符串的进阶
    • 1.字符串的拷贝
      • (1)strcpy()函数
      • (2)for循环
    • 2.字符串的比较
      • (1)strcmp()函数
      • (2)for循环
  • 三、用字符指针输入字符串
  • 四、待更新

一、字符串基础 1.字符串的输入

gets():直接输入字符串,并且只能输入字符串,默认以回车结束。
scanf():以%s来输入字符串,默认以空格、回车、制表符结束。

char c[100];
gets(c);
scanf("%s",c);

ps:相比于scanf,gets()更为简介,且gets能够录入空格和制表符,所以输入字符串更推荐gets(),但如果是多个字符串的输入且不包含空格,scanf()有得天独厚的优势。

2.字符串的输出

puts():直接输入整个字符串,并且只能输出字符串。
printf():以%s来输出字符串,与puts作用一样。

	char c[100]={"abcde fg"};
	printf("%sn",c);
	puts(c);

ps:puts()与scanf()的在输出字符串上用法一样,但是scanf()的换行比puts()更为便捷。

3.字符串的遍历

遍历字符串其实就是遍历字符数组,首先必须知道字符串的长度。这里提供两种办法来获取字符串的长度。

(1)strlen()函数

c语言函数库自带获取字符串的长度的数组(因为字符串是以’’结束,所以无论字符数组多大(前提足够大)都不会影响字符串的长度获取。

char c[100]={"abcdefg"};
int m=strlen(c);
printf("%d",m);

上面输出的结果就是7。

ps:strlen()函数需要使用string.h头文件,且strlen()获取长度不包括‘’。

(2)while循环

因为字符串是以’’结束,所以只需要循环到’’结束即可

char c[100]={"abcdefg"};
int i=0;
while(c[i]!='')i++;
printf("%d",i);

上面输出的结果也是7。

字符串的遍历其实获取字符串长度的第二个方法就用到了。

#include
int main(){
	char c[100];
	gets(c); 
	int i=0;
    while(c[i]!=''){
    //相应的步骤	
	i++;
	}
} 

或者

#include
int main(){
	char c[100];
	gets(c); 
	int len=strlen(c);
    for(int i=0;i 
二、字符串的进阶 
1.字符串的拷贝 

同样的,字符串的拷贝也有两种方法。

(1)strcpy()函数

c语言自带的strcpy()函数(存在于string.h头文件中)就可以帮助我们很好地实现字符串的拷贝

char c[100];
    strcpy(c,"abcdefg");
    puts(c);

输出结果就是abcdefg

(2)for循环

循环拷贝,只适用于两个字符数组间的拷贝。

char c[100]={"abcdefg"};
    char a[100];
    for(int i=0;c[i]!='';i++){
    	a[i]=c[i];
	}
    puts(a);

输出结果也是abcdefg

2.字符串的比较

字符串的比较依旧有两种方法

(1)strcmp()函数

如果两个字符串完全相等,则返回0,否则返回一个非零值。

char c[]={"abcdefg"};
char s[]={"abcdefg"};
printf("%d",strcmp(s,c));

输出结果为0。

char c[]={"abcdefg"};
char s[]={"abcdef"};
printf("%d",strcmp(s,c));

输出结果为一个非零值

(2)for循环
bool ss(char s[],char c[]){
	if(strlen(s)!=strlen(c))return 0;
	for(int i=0;s[i]!='';i++){
		if(s[i]!=c[i])return 0;
	}
	return 1;
}
三、用字符指针输入字符串

字符指针输入字符串适用于不确定字符串长度时

char c[2];
char *s;
s=c;
gets(s);

ps:存在输入失败的情况,vs报错为缓存区溢出。

为了解决以上问题,我们在堆区开辟空间。

char *s=(char *)malloc(sizeof(char));
gets(s);
四、待更新

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存