椰Ye 2022-12-10 01:22 采纳率: 63.2%
浏览 41
已结题

C++利用指针实现字符串比较

C++利用指针实现字符串比较
用Ascii码进行比较,但总是输出0
/*编写程序,实现两个字符串比较的自定义版本:
int strcmp(const char *str1,const char *str2);
//当strl>str2时,返回正数;1  
//当str1==str2时,返回0;
//当strl<str2时,返回负数。-1
*/
#include<iostream>
#include<string>
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,但找不到问题
是字符串长度计算上面出问题了吗?
  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-10 08:40
    关注

    用字符方式输入字符串,末尾要手动添加'\0'标记。
    len1 = *str1 / str1[0]; 指针用这种方法得不到长度,这方法仅适用于[]方式的数组,而且结果也是数组大小,不是字符串长度。 你这个式子结果始终为1。
    循环中使用str1[i]!='\0'判断字符串结束,不需要用len。
    size1 += (int)str1[i];这种方式判断不了字符串大小,只能判断字符串中字符ascii码的和的大小,字符串BBBaa和aaBBB比较,你这函数会认为相等

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月10日

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号