前言
一、字符串基础 1.字符串的输入字符串,就是一堆字符串在一起,形象点就是字符数组,在c中字符串可以和字符数组划等号,但在c++中有专门的string(字符串型)来定义字符串。
目录
- 一、字符串基础
- 1.字符串的输入
- 2.字符串的输出
- 3.字符串的遍历
- (1)strlen()函数
- (2)while循环
- 二、字符串的进阶
- 1.字符串的拷贝
- (1)strcpy()函数
- (2)for循环
- 2.字符串的比较
- (1)strcmp()函数
- (2)for循环
- 三、用字符指针输入字符串
- 四、待更新
gets():直接输入字符串,并且只能输入字符串,默认以回车结束。
scanf():以%s来输入字符串,默认以空格、回车、制表符结束。
char c[100]; gets(c); scanf("%s",c);
2.字符串的输出ps:相比于scanf,gets()更为简介,且gets能够录入空格和制表符,所以输入字符串更推荐gets(),但如果是多个字符串的输入且不包含空格,scanf()有得天独厚的优势。
puts():直接输入整个字符串,并且只能输出字符串。
printf():以%s来输出字符串,与puts作用一样。
char c[100]={"abcde fg"}; printf("%sn",c); puts(c);
3.字符串的遍历ps:puts()与scanf()的在输出字符串上用法一样,但是scanf()的换行比puts()更为便捷。
(1)strlen()函数遍历字符串其实就是遍历字符数组,首先必须知道字符串的长度。这里提供两种办法来获取字符串的长度。
c语言函数库自带获取字符串的长度的数组(因为字符串是以’’结束,所以无论字符数组多大(前提足够大)都不会影响字符串的长度获取。
char c[100]={"abcdefg"}; int m=strlen(c); printf("%d",m);
上面输出的结果就是7。
(2)while循环ps:strlen()函数需要使用string.h头文件,且strlen()获取长度不包括‘’。
因为字符串是以’’结束,所以只需要循环到’’结束即可
char c[100]={"abcdefg"}; int i=0; while(c[i]!='')i++; printf("%d",i);
上面输出的结果也是7。
字符串的遍历其实获取字符串长度的第二个方法就用到了。
#includeint main(){ char c[100]; gets(c); int i=0; while(c[i]!=''){ //相应的步骤 i++; } }
或者
#includeint 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);(2)for循环输出结果就是abcdefg
循环拷贝,只适用于两个字符数组间的拷贝。
char c[100]={"abcdefg"}; char a[100]; for(int i=0;c[i]!='';i++){ a[i]=c[i]; } puts(a);2.字符串的比较输出结果也是abcdefg
(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);四、待更新欢迎分享,转载请注明来源:内存溢出
评论列表(0条)