C语言String类型小结

String

字符串与字符数组

#include<stdio.h>//String
int main()
{
	char *str="hello";
	//字符串与字符数组的关系:
	//字符串是结尾有'\0'的字符数组
	//如:"hello"等于{'h','e','l','l','o','\0'} 
	for(int i=0;i<5;i++)
	{
		printf("%c",str[i]);
	}
	printf("\n");
	
	//一行变两行
	printf("hello \ 
world\n"); //注意第一行结尾\后还有一个空格
	return 0; 
}

字符串输入之scanf

#include<stdio.h>
int main(){
	char str[4],strl[4];
	scanf("%3s%3s",&str,&strl);
	//最多读前三位,可以少
	//例如输入abcde,则输出abc##de;
	//输入abcd efg,则输出abc##d 
	printf("%s##%s",str,strl);
	return 0;
} 

还有一个getchar方法,这里就不多说了

strcmp&strcpy&strcat

即:比较&复制&连接

#include<stdio.h>
#include<string.h>
//strcmp&strcpy&strcat
//比较&复制&连接 
int main(){
	char a[]="abc";
	char b[]="abc";
	
	
	printf("%d\n",strcmp(a,b));//输出0 
	if(strcmp(a,b)==0){//这里不能不写判断 
		printf("相等\n");
	char c[]="Abc";
	printf("%d\n",strcmp(a,c));
	//输出1,有的编译器会输出32,正数代表a比c大,负数相反
	
	
	char d[]="cde";
	strcpy(d,a);//第二个是被复制字符串 
	printf("%s\n",d);//输出d


	strcat(a,b);
	printf("%s",a);//输出a
	}
	//strcpy&strcat有安全问题
	//因此常使用strncpy&strncat
	//传入参数时最后加一个n,代表对后一个传入字符串最多读取n个数 
	//strncmp则不同,n的作用为使该函数改为判断前n个字符是否相同 
}

strchr&strrchr

即:查找字符&从右边查找字符

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//strchr&strrchr
//查找字符&从右边查找字符
//返回一个指针
 
int main(){
	char str[]="hello";
	char *p=strchr(str,'l');
	
	printf("%s\n",p);//输出了 llo
	printf("%s\n",p+1);//输出了 lo
	
	p=strchr(p+1,'l');//p指向下一个元素位置 
	printf("%s\n",p);//同样输出 lo 
	
	char *t=(char*)malloc(strlen(p)+1);
	//加1的原因是字符串结尾有'\0'而strlen不计'\0'
	strcpy(t,p);//复制p到t 
	printf("%s\n",t);//输出 lo 
	free(t);
	
	//翁恺老师教的骚操作(doge) 
	char c=*p;
	*p='\0';//中断字符串 
	char *q=(char*)malloc(strlen(str)+1);//来了来了他来了
	strcpy(q,str);//只会复制到str*p='\0'之前的一位,也就是 hel 的 l 
	*p=c;//把*p写回来 
	printf("%s\n",q);
	free(q);
} 

另外,还有常用的字符串查找函数,建议去看看大佬的博客↓

strstr和strcasestr

简单地说,

strstr的作用是在字符串中查找字符串并以指针形式输出该字符串在被查找字符串中第一次出现的位置

strcasestr的作用比strstr多了一条无视大小写


版权声明:本文为Hoppinging原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。