一些函数,比如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; }