if语句运行出来只有小于一种情况

if语句运行出来只有小于号这一种情况

#include <iostream>
#define N 80
using namespace std;
int fun(char*str)
{
    int i = 0;
    while(str[i] != '\0')
        i++;
    return(i);
}

void com(char a[N], char b[N])
{
    int i = 0;
    char*p1=a;
    char*p2=b;
    while(*(p1+i)==*(p2+i)&&*(p1+i)!='\0'&&*(p2+i)!='\0')
    {
        i++;
    }

    if(*(p1+i)>*(p2+i))
    {
        cout << p1 << ">" << p2 << endl;
    }
    else if(*(p1+i)<*(p2+i))
    {
        cout << p1 << "<" << p2 << endl;
    }
    else
    {
        cout << p1 << "==" << p2;
    }
}

int main()
{
    cout << "请输入要计算长度的字符串" << endl;
    char a[1000];
    cin >> a;
    cout << "该字符串的长度为" << fun(a) << endl;

    cout << endl << "字符串的比较" << endl;
    char c[N];
    char d[N];
    cout << "请输入需要比较的字符串:" << "(eg: hello (空格) world)" << endl;
    cin.getline(c,N);
    cin.getline(d,N);
    com(c,d);
    return 0;
}


结果不管输入什么字符串 都是小于 且位置不对

img

我跑了一下这个程序,第一个 cin.getline(c,N);跳过了,没输入内容。所以一直显示小于

详细内容你可以看下这个文章