以下是在学习使用字符串处理函数时,一时心血来潮尝试着自己用C语言编译这些函数。编译完成后感觉有很多不好的地方,于是来向前辈们请教,希望得到指点。(其中字符串比较函数不知道哪里出错了,一直输出的是0)
#include<stdio.h>
//在编译时遇到了一个错误:return makes pointer from integer without a cast 即 返回不进行强制转换,使从整数的指针。
char one_cat(char *a,char *b)//字符串连接函数 ----- 1
{
int i=0,j=0;
while(a[i]!='\0'){i++;}
while(b[j]!='\0'){a[i++]=b[j++];}
printf("%s",a);
}
char two_cpy(char *a,char *b) //字符串复制函数 ,此函数不严谨,因为a数组的空间可能比b数组的空间小。 ----- 2
{
int i,j=0;
while(b[j]!='\0'){a[i]=b[j];i++,j++;}
printf("%s",a);
}
char three_cmp(char *a,char *b) //字符串比较函数 ----- 3
{
int i=0;
while((a[i]=b[i])&&a[i]!='\0'){i++;}
if (a[i]-b[i]==0){printf("0");}
else if(a[i]-b[i]>0){printf("1");}
else {printf("-1");}
}
char four_len(char *a)//测字符串长度 the reason of warn:return(n)->> return 0; ----- 4
{
int n;n=0;
for(;a[n]!='\0';)
{
n++;
}
printf("字符串长度为%d",n);
}
char five_lwr(char *a)//大写转为小写 ,ok ----- 5
{
int i,j;
while(a[i]!='\0')
{
if(a[i]>=60&&a[i]<=90) {a[i]=a[i]+32;printf("%c",a[i]);}
else if(a[i]>=97&&a[i]<=122){printf("%c",a[i]);}
else {printf("该字符不是大小写字母");}
i++;
}
}
char six_upr(char *a)//小写转为大写 ,ok ----- 6
{
int i,j;
while(a[i]!='\0')
{
if(a[i]>=60&&a[i]<=90) {printf("%c",a[i]);}
else if(a[i]>=97&&a[i]<=122){a[i]=a[i]-32;printf("%c",a[i]);}
else {printf("该字符不是大小写字母");}
i++;
}
}
int main()
{
char a[15]="Hello";
char b[7]="World!";
one_cat(a,b);
two_cpy(a,b);
three_cmp(a,b);
four_len(a);
five_lwr(a);
six_upr(b);
printf("%s",a);
return 0;
}