strcmp() 的问题
Problems with 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 << ' ' << data[i].date() << date << endl; //testing
if (strcmp(data[i].date(),date) == 0)
return data[i].low();
}
return 0.0;
}
这是 date() 函数(public 成员函数)的代码。
const char* Weather::date() const {
return _dateDescription;
}
出于某种原因,即使字符串匹配,strcmp 函数也会 return 1。 dateDescription 是一个包含 7 个字符的 C 样式字符串,data[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)
没有显示的是我测试的日期变量。
Paste of the full code
这是你的问题:
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 还是函数本身,但有些东西不起作用。 这是主函数中的代码。
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;
}
这是 date() 函数(public 成员函数)的代码。
const char* Weather::date() const {
return _dateDescription;
}
出于某种原因,即使字符串匹配,strcmp 函数也会 return 1。 dateDescription 是一个包含 7 个字符的 C 样式字符串,data[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)
没有显示的是我测试的日期变量。 Paste of the full code
这是你的问题:
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
是 ""
而不是输入的日期。