一些函数,比如strcpy,strcat,可能存在数组越界的安全隐患,建议改用strncpy,strncat
注意要在后面补上参数,限制字符个数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
//1、计算长度
char line[]="HELLO";
printf("strlen=%lu\n",strlen(line)); //五个字节的字母
printf("strlen=%lu\n",sizeof(line)); //多了一个字节的\0
//2、比较——编译器不同输出情况可能不一样
char s1[]="abC";
char s2[]="abc";
printf("%d\n",strcmp(s1,s2));
//逐个比较同位大小,若相等,比较下一位,不等则输出结果
//3、字符串复制
char s4[4];
char *s3=strcpy(s2,s1);
for(int i=0;i<strlen(s1);i++)
{
s4[i]=*s3;
s3++;
}
printf("des="); //这里的s4如果直接用%s输出,后面会有一串“烫烫烫”
for(int i=0;i<strlen(s1);i++)
printf("%c",s4[i]); //感觉有点麻烦,但好像也能输出
printf("\n");
//可能这才是正确用法
char a[20], c[] = "I am a teacher!";
strcpy(a,c);
printf("c=%s\n",c);
printf("a=%s\n",a);
char b[15]={0}, d[] = "I am a teacher!\0"; //初始化带个\0就不会出现“烫烫烫”的字符
strncpy(b,d,7);
printf("d=%s\n",d);
printf("b=%s\n",b);
//4、字符串的查找
char s5[]="internet";
char *m=s5;
//左查找(从左到右第一个的指针)
m=strchr(s5,'e');
printf("%p\n",m);
//右查找(从右往左第一个的指针)
m=strrchr(s5,'e'); //可以试着看看它的位置
printf("%p\n",m); //如果找不到就会报错
//5、大写转小写
printf("%s\n",strupr(c));
//6、小写转大写
printf("%s\n",strlwr(c));
printf("\n#####使用实例#####\n");
//使用实例
//初始化
char str[20]="Programming";
char cstr[20];
char tmp[20];
int i;
//输入字符串
printf("请输入字符串:");
gets(cstr);
//比较,小的放在str中
if(strcmp(str,cstr)>0)
{
strcpy(tmp,str);
strcpy(str,cstr);
strcpy(cstr,tmp);
}
//连个"**"
strcat(cstr,"**"); //给较大的字符串连
i=strlen(cstr);
//判断输出
if(i+strlen(str)<20)
{
strcat(cstr,str);
puts(cstr); //输出连接后的结果
}
else
printf("strcat搞不定啊\n");
//升为大写
strupr(cstr);
puts(cstr);
system("pause");
return 0;
}