C++str类函数问题,求解!
问题描述:
1.题目
输入2个字符串,分别用
void str_cat(char*p1,char*p2);int str_cmp(char*p1,char*p2);int str_len(char*p1,char*p2)
输出2个字符串的比较结果,拼接字符串和其长度。
2.我的代码
```#include#includeusing namespace std;void str_cat(char*p1,char*p2);int str_cmp(char*p1,char*p2);int str_len(char*p1,char*p2);int main(){const int s=20;char str1[s];char str2[s];cin.getline(str1,s);cin.getline(str2,s);char* p1,p2;p1=str1;p2=str2;str_cat(p1,p2);str_cmp(p1,p2);str_len(p1);}void str_cat(char*p1,char*p2){cout<<strcat(p1,p2);}int str_cmp(char*p1,char*p2){cout<<strcmp(p1,p2);return 0;}int str_len(char*p){return strlen(p);}
请问我错在那些地方,麻烦给我写出来,万分感谢!!!!!!!!!!!!!!!!!!!!!!!!!**要求运行后显示
1.两个字符串比较后的结果
2.拼接后的字符串
3.其长度**
答
void str_cat(char*p1,char*p2)
{
while (*p1 != '\0') p1++;
int i = 0;
while (p2[i++] != '\0')
{
*p1 = p2[i - 1];p1++;
}
*p1 = '\0';
}
int str_cmp(char*p1,char*p2)
{
while (*p1 != '\0' && *p2 != '\0')
{
if (*p1 != * p2) return *p1 - *p2;
p1++;p2++;
}
return *p1 - *p2;
}
int str_len(char*p1,char*p2)
{
int n = 0;
while (*p1 != '\0') { p1++; n++; }
while (*p2 != '\0') { p2++; n++; }
return n;
}
int main()
{
char s1[100]="hello ";
char s2[]="world!";
str_cat(s1, s2);
printf("%s\n", s1);
int n = str_cmp("aaa", "ab");
printf("%d\n", n);
n = str_len("aaa", "ab");
printf("%d\n", n);
}
答
*p1=str1[s]; 什么鬼? 应该是p1 = str1吧
str_cmp[p1,p2];这是什么情况,方括号?
。。。
问题多,你直接看修改后的代码吧
#include <iostream>
#include <string.h>
using namespace std;
void str_cat(char*p1,char*p2);
int str_cmp(char*p1,char*p2);
int str_len(char*p1);
int main()
{
const int s=20;
char str1[s];
char str2[s];
cin.getline(str1,s);
cin.getline(str2,s);
char* p1,*p2;
p1=str1;
p2=str2;
str_cat(p1,p2);
str_cmp(p1,p2);
str_len(p1);
}
void str_cat(char*p1,char*p2)
{cout<<strcat(p1,p2);}
int str_cmp(char*p1,char*p2)
{cout<<strcmp(p1,p2);
return 0;}
int str_len(char* p)
{return strlen(p);}