关于自己写一个函数strcmp,实现两字符串比较的问题!
大马哈鱼 2011-05-10 07:05:41 自己写一个strcmp
思路是定义两个字符数组,数组名传入strcmp,两字符串比较。
#include <iostream>
#include <algorithm>
#include "math.h"
#include <iomanip>
#include "conio.h"
#include <string>
using namespace std;
int main(){
char str3[20], str4[20];
cin>>str3>>str4;
void mystrcmp(char *str1, char *str2);
mystrcmp(str3, str4);
return 0;
}
void mystrcmp(char *str1, char *str2){
char* p;
char* q;
int a=0,b=0,c=0;
//求出传入两个数组的长度
while(*str1!='\0'){
str1++;
a++;
}
while(*str2!='\0'){
str2++;
b++;
}
cout<<a<<' '<<b<<endl;
//将长度小的那个数组的首地址赋给指针P,长的赋给q,将长度小的数组长度赋值给c
if(a<=b){
p=str1;
cout<<p;
q=str2;
c=a;
} else{
p=str2;
q=str1;
c=b;
}
//从两个数组首元素开始比较,如果相等则比较下一个元素,直到有不相等,而且比较的次数小于等于长度较小的数组元素的个数
int n=0;
while(*(p+n)==*(q+n) && n<c-1){
n++;
cout <<n<<' ';
}
//这时n定位在两个数组不相等的那第n个元素上,那比较第n个元素的值,
if(n<c && *(p+n)<*(q+n)) cout<<p<<"<"<<q;
if(n<c && *(p+n)>*(q+n)) cout<<p<<">"<<q;
if(n==c && a<b) cout<<p<<"<"<<q;
if(n==c && a==b) cout<<p<<"=="<<q;
}
我用了cout<<p(指针指向str1)<<str1(形参指针) 但是打印出来的为空,而且while循环次数也有问题,我想请大家指出问题所在就可以了不用修改程序,这种方法是很不好,但再不好的程序也要先写完,然后再改进,我看过微软的strcmp源代码所以请大家按照我的方法指出问题就可以了,谢谢!