Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ strcmp()的问题_C++_Strcmp - Fatal编程技术网

C++ strcmp()的问题

C++ strcmp()的问题,c++,strcmp,C++,Strcmp,我不确定是strcmp还是函数本身,但有些东西不起作用。 这是主函数中的代码 double findLow(const char* date, const Weather *data, int dataSize) { int i, o; for (i = 0; i < dataSize; i++) { o = strcmp(data[i].date(), date); //testing cout << o << '

我不确定是strcmp还是函数本身,但有些东西不起作用。 这是主函数中的代码

double findLow(const char* date, const Weather *data, int dataSize) {
    int i, o;
    for (i = 0; i < dataSize; i++) {
        o = strcmp(data[i].date(), date); //testing
        cout << o << ' ' << data[i].date() << date << endl;  //testing
        if (strcmp(data[i].date(),date) == 0)
            return data[i].low();       
    }
    return 0.0;
}
const char* Weather::date() const {
    return _dateDescription;
}
由于某些原因,strcmp函数将返回1,即使字符串匹配。dateDescription是一个由7个字符组成的C样式字符串,数据[i].date()尝试以与dateDescription相同的格式查找日期


此外,cout将不显示数据[i].date()

编辑:当我运行完整代码时,它如下所示:

Days of Weather: 3
Enter date: Oct/1
Enter high: 15
Enter low : 10
Enter date: Nov/13
Enter high: 10
Enter low : 1.1
Enter date: Dec/15
Enter high: 5.5
Enter low : -6.5

Weather report:
Date        high  low
======================
Oct/1_______15.0__10.0
Nov/13______10.0___1.1
Dec/15_______5.5__-6.5

Enter the date you are looking for: Nov/13
1 Oct/15
1 Nov/13
1 Dec/15
Low temperature: 0.0(meant to show the low temp of the date requested)
没有显示的是我测试的日期变量。 这是你的问题:

cin >> query;
//(in this example stored in char query[7])
// and display the found low temprature.

cin.getline(query, 7, '\n');
从标准输入中读入
query
,然后再次读入。第二次,那一行除了
'\n'
,什么都没有了,所以它读取一个空字符串

我删除了
cin.getline
,得到了一个合理的结果


检测这种情况的方法是使用调试器逐步执行,注意
query
,而不是键入的日期。

出于某种原因,strcmp函数将返回1,即使字符串匹配——很明显,字符串不匹配。要么你错了,要么你有一个错误的编译器。“而且cout不会显示数据[i].date()”,那么你的问题不在于strcmp。这可能与
\u dateDescription
的设置方式有关,甚至可能与
数据的设置有关。你能显示代码吗?一个常见的问题是比较的字符串中有一个尾随的换行符。这取决于数据来自何处,但您还没有向我们展示。您是否考虑过在调试器中单步执行代码并查看要比较的字符串?如果您只是使用调试器单步执行代码,这个问题应该很明显。你会发现你的输入是不正确的。