3,分别实现4个函数,类似strlen,strcpy,strupr,strcat,函数内不得使用任何库函数。
更多有用东西见代码注释:
#include<bits/stdc++.h>
using namespace std;
int sub_strlen(char *s)
{
int i = 0;
for(i = 0; *s != '\0'; s++, i++);
return i;
}
char sub_strcpy(char* s1, char* s2)
{
//for(;(*s1++ = *s2++) != '\0';);①
while(*s1++ = *s2++);///①式的简洁版
}
sub_strupr(char* s)
{
int i = 0;
if(s[i] == '/0')
cout<<"Illegal operation."<<endl;
else
{
for(; *s != '\0'; s++)
*s -= 32;
}
}
void sub_strcat(char* s1, char* s2)
{
///好奇怪,用指针加i来表示指针偏移居然不行。只能用指针自己的偏移
char* temp = s1;
for(; *s1 != '\0'; s1++);
//for(; (*s1++ = *s2++) != '\0';);
while(*s1++ = *s2++);
//return temp;///如果这个函数改为char* 类型,在主函数中如果只是调用这个函数却不赋给一个char* 变量,函数同样有效
}
int main()
{
char a[] = "abc", b[] = "bcdd", *p, *q;
p = a;
q = b;
cout<<"a串:"<<a<<'\t'<<"b串:"<<b<<endl;
cout<<"a串长度:"<<sub_strlen(a)<<endl;
cout<<"b串长度:"<<sub_strlen(b)<<endl;
sub_strcpy(a, b);
cout<<"把b拷贝到a中去:"<<a<<endl;
sub_strupr(a);
cout<<"把a串变大写:"<<a<<endl;
char c[] = "abc";
cout<<"c串:"<<c<<endl;
sub_strcat(a, c);
cout<<"把c串拼接到a串后:"<<a<<endl;
return 0;
}