c++程序用指针写一函数实现字符串的比较功能

如题所述

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
//字符串比较函数
int strCompare(const char * str1,const char * str2)
{
int i=0; //索引,初始化为0

while( *(str1+i)!='\0' && *(str2+i)!='\0')//只要两个字符串都没到串尾,就循环检测
{

if(*(str1+i)>*(str2+i))
{
return 1;
}
else if(*(str1+i)<*(str2+i) )
{
return -1;

}

i++; //索引自增
}

//循环后的比较
if(*(str1+i)=='\0' && *(str2+i)=='\0') //若两个串同时到串尾 且等值
return 0;
else if(*(str1+i)=='\0' && *(str2+i)!='\0')//str1先到串尾
return -1;
else
return 1;
}
int main()
{
//主函数进行两个输入字符串的测试
char * str1=new char[20];
char * str2=new char [20];
cout<<"输入字符串str1=";
cin>>str1;
cout<<"输入字符串str2=";
cin>>str2;
int result=strCompare(str1,str2); //调用字符串比较函数并返回值
cout<<"比较结果:"<<endl;
if(result>0)
cout<<str1<<" 大于 "<< str2;
else if(result<0)
cout<<str1<<" 小于 "<< str2;
else
cout<<str1<<" 等于 "<<str2;
delete str1;
delete str2;
cin.get();
cin.get();
return 0;

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-25
这个很经典的题目
strcmp()函数原型

int strcmp(const char *strOne, const char *strTwo)

strcmp()函数定义

int strcmp(const char *strOne, const char *strTwo)

{

if ((NULL == strOne) || (NULL == strTwo))

throw"Invalid Arguments!";

while((*strOne != '/0') && (*strTwo != '/0') && (*strOne == *strTwo))

{

strOne++;

strTwo++;

}

return (*strOne - *strTwo);

}

Remarks:(在VC和GCC编译器中使用原有的strcmp()库函数,则结果与上面的不同)

若strOne大于strTwo,则返回1;

若strOne小于strTwo,则返回-1;

若strOne等于strTwo,则返回0;

不同编译器对返回值有不同的规定。本回答被网友采纳
第2个回答  2012-06-26
c++的string中给出了各种比较函数,直接用就可以了

C++ 写一个函数,实现两个字符串的比较,即自己写一个strcmp函数
{if(q>i) return (int)P2[q]; \/\/如果P2比P1长,则返回P2超过P1的第1个字符的ASCII码 if (P1[q]!= P2[q]) return (int)(p1[q] - p2[q]);} \/\/如果在q个字符P1不等于P2,返回ASCII码差 \/*如果两个字符串都检测结束了,还没有发现不同字符那就要比较两个字符串长度是否一样...

c++ 编写函数比较两个字符串前n个字符是否相等(不区分大小写) 用...
第一个字符串是:who are you ?第二个字符串是:who are they ?请输入n的值:8 equal 请按任意键继续. . .\/ include <iostream> using namespace std;bool mystrnicmp(char *str1,char *str2,int n) { for(int i = 0;i < n;i++)if(*(str1 + i) != *(str2 + i))retur...

c++自己写一个strcmp函数,实现两个字符串的比较。两个字符串s1,s2由m...
char s2[10] = "1234";int ret1 = strcmp_new(s1,s2);printf("ret=%d\\n", ret1);getchar();return 0;}

C++ 实现库函数strcmp()的功能 使用指针逐个比较字符,直到比较到不同的...
} return -1;}

C语言用指针编写函数判断输入的字符串是是否为回文,然后再主函数中
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、#include <stdio.h>int ss(int i) \/*自定义函数判断是否为素数*\/{int j; if (i <= 1) \/*小于1的数不是素数*\/ return 0; if (i == 2) \/*2是素数*\/ return 1。3、 for (j = 2; j < i; j++) \/*...

C++怎样比较char型的字符串与其他字符串
字符串比较用 strcmp(str1, str2) == 0 判断相等的,==是比较指针所指的地址是否相等。例如:char str[] = "Hello World";char* p1 = str;char* p2 = str;bool b1 = (p1 == p2); \/\/ true bool b2 = (p1 == "Hello World"); \/\/ false,注:理论上是false,如果编辑器有优化...

用c++编写一个程序,用指向函数的指针实现求两个实数中的较大値和较小...
int min(int num1, int num2){ return (num1<=num2 ? num1 : num2);} main(){ int *fun(int, int);int a = 10, b = 20;fun = max;count<<"the larger integer is: "<<fun(a, b)<<endl;fun = min;count<<"the smaller integer is: "<<fun(a, b)<<endl;} ...

...将它们按由小到大的顺序输出,要求用函数,指针实现。
1、首先打开vc6.0, 新建一个项目。 2、添加头文件。 3、添加main函数。 4、定义x, y, z, t。 5、使用scanf给定义的变量赋值。 6、使用printf输入。 7、运行程序,可以看到输入的3个字符串,比较它们的大小,并将它们按由小到大的顺序输出。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 推荐...

...定义一个函数,比较两个数的大小,形参分别使用指针和引用
include<iostream> include<stack> using namespace std;float compare(float *a,float &b) \/\/a为指针,b为引用 { if (*a>b) return *a;else return b;} int main(){ float x,y;cin>>x>>y;cout<<"The max="<<compare(&x,y)<<endl;return 0;} ...

c++字符串比较是否相等?
比较C++中的字符串是否相等,主要依赖于strcmp函数。该函数直接比较两个字符串的字符序列,从而判断其是否完全相同。使用时,确保两个比较的字符串具有相同长度,并且字符顺序一致。然而,编译器可能在优化时将相同的字符串字面量存储在同一个内存位置,但这并不意味着它们可以直接相互比较或共享。始终使用...

相似回答