/*编写程序,实现两个字符串比较的自定义版本:
int strcmp(const char *str1,const char *str2);
//当strl>str2时,返回正数;1
//当str1==str2时,返回0;
//当strl
#include
#include
using namespace std;
int strcmp(const char* str1, const char* str2);//函数声明
int main() {
cout << "请输入两个字符串" << endl;
char str1[100];
char str2[100];//存储两个数组
char ch = 0;
int i = 0; int j = 0;
while ((ch = getchar()) != '\n') {
str1[i] = ch;
i++;
}
while ((ch = getchar()) != '\n') {
str2[j] = ch;
j++;
}
cout << "你输入的两个字符串分别是:" << endl;
for (int a = 0; a < i; a++) {
cout << str1[a];
}
cout << endl;
for (int a = 0; a < j; a++) {
cout << str2[a];
}
cout << endl;
cout<<strcmp(&str1[i],&str2[j]);
return 0;
}
int strcmp(const char* str1,const char* str2) {
int len1 = 0, len2 = 0;
len1 = *str1 / str1[0];
len2 = *str2 / str2[0];
int size1 = 0, size2 = 0;
for (int i = 0; i < len1; i++) {
size1 += (int)str1[i];
}
for (int i = 0; i < len2; i++) {
size2 += (int)str2[i];
}
if (size1 > size2)
return 1;
if (size1 < size2)
return -1;
if (size1 = size2)
return 0;
}
用字符方式输入字符串,末尾要手动添加'\0'标记。
len1 = *str1 / str1[0]; 指针用这种方法得不到长度,这方法仅适用于[]方式的数组,而且结果也是数组大小,不是字符串长度。 你这个式子结果始终为1。
循环中使用str1[i]!='\0'判断字符串结束,不需要用len。
size1 += (int)str1[i];这种方式判断不了字符串大小,只能判断字符串中字符ascii码的和的大小,字符串BBBaa和aaBBB比较,你这函数会认为相等