用c++写一个模拟strcmp函数的int型新函数,不要用指针,返回值:相等为0,不相等为第1个不相等字符的ascii码的差值
时间: 2023-06-14 08:06:33 浏览: 97
这里提供一种基于字符数组的实现方法:
```c++
int my_strcmp(const char str1[], const char str2[]) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') { // 遍历字符串
if (str1[i] != str2[i]) { // 如果字符不相等
return (int)str1[i] - (int)str2[i]; // 返回差值
}
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') { // 如果两个字符串都遍历完了
return 0; // 返回0,表示相等
}
else { // 否则返回未遍历完的字符串的第一个字符的ascii码
return (int)str1[i] - (int)str2[i];
}
}
```
其中,`str1[]` 和 `str2[]` 分别表示两个待比较的字符串,`i` 表示当前比较到的字符的下标。函数首先遍历两个字符串,如果当前字符不相等,则返回它们的差值;如果两个字符串都遍历完了,则表示它们相等,返回0;否则返回未遍历完的字符串的第一个字符的ascii码的差值。
需要注意的是,该函数没有对输入的字符串长度进行检查,如果传入的字符串长度超过了数组的长度,可能会导致数组越界。
相关问题
写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1,char *p2);设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1!=s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14)。如果s1>s2,则输出正值;如果s1<S2,则输出负值。C++
以下是实现了要求的strcmp函数的C++代码:
```c++
int strcmp(char *p1, char *p2) {
while (*p1 == *p2 && *p1 != '\0') {
p1++;
p2++;
}
return *p1 - *p2;
}
```
该函数首先利用while循环遍历两个字符串,比较它们的每一个字符,直到找到不同的字符或者访问到字符串的结尾。如果两个字符串完全相等,则返回0;如果发现第一个不同字符的ASCII码差值,则返回它们的差值。如果s1>s2,则返回正值;如果s1<s2,则返回负值。
注意,在实现该函数时,要确保指针变量p1和p2不为空指针,并且在比较字符串时,要考虑到字符串的结尾符号'\0'。
描述 编写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为strcmp(char *p1,char *p2),设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;(s1,s2长度相等并且不超过100)若s1!=s2,返回它们两者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值,反之输出负值。(本题要求用指针来做) 输入 第一行为N,表示接下来有N组测试数据。接下来的N行表示N组测试数据,每组测试数据包含两个字符串,中间用空格隔开,并且保证每个字符串中的字符都是小写字母。 输出 输出两个字符串比较的结果。
下面是实现两个字符串比较的函数strcmp的代码:
```c++
#include <iostream>
using namespace std;
int strcmp(char* p1, char* p2) {
int i = 0;
while (p1[i] != '\0' && p2[i] != '\0') {
if (p1[i] != p2[i]) {
return p1[i] - p2[i];
}
i++;
}
return p1[i] - p2[i];
}
int main() {
int n;
cin >> n;
while (n--) {
char s1[101], s2[101];
cin >> s1 >> s2;
cout << strcmp(s1, s2) << endl;
}
return 0;
}
```
首先定义了一个strcmp函数,用于比较两个字符串。函数中使用while循环,遍历两个指针指向的字符串中的每个字符,如果两个字符不同,则返回它们的ASCII码差值;如果遍历完两个字符串后发现它们相等,则返回0。如果s1>s2,则返回正值,反之返回负值。
主函数中先输入测试数据组数n,然后使用while循环读入每组测试数据,调用strcmp函数比较两个字符串,并输出比较结果。
阅读全文