基本上,该程序要求用户输入将被输入到结构中的产品名称。但是,如果输入的名称是“quit”(不带引号),则循环应终止。这是完整的代码:
#include <iostream>
#define maxNum 9
using namespace std;
struct Products{
char name [20];
int modelNumber;
float price;
} products [maxNum];
void productsDisplay (Products products);
int main()
{
int i;
int k;
cout << "Enter up to 10 product details.\n"
<< "Enter quit as product name to exit the program.\n";
for (i = 0; i <= maxNum; i++)
{
cout << "Enter the product name: ";
cin >> products[i].name;
if (products[i].name == "quit")
break;
cout << "Enter the model number: ";
cin >> products[i].modelNumber;
cout << "Enter the price: ";
cin >> products[i].price;
cout << endl;
}
for (k = 0; k <= i; k++)
{
productsDisplay (products[k]);
}
system("pause");
return 0;
}
void productsDisplay (Products products)
{
cout << "Product name: " << products.name << endl;
cout << "Model number: " << products.modelNumber << endl;
cout << "Product price: $" << products.price << endl;
cout << "----------------------\n";
}
主要问题是这一点:
for (i = 0; i <= maxNum; i++)
{
cout << "Enter the product name: ";
cin >> products[i].name;
if (products[i].name == "quit")
break;
实际上一切都工作正常,除了当我输入“退出”时,程序不会从 for 循环中中断并继续直到完成。解决方案可能在于使用字符串类型和“strcopy”语句,但我不太确定如何正确实现它们。我对这个问题感到非常困惑,希望能得到任何帮助来解决它,感谢您的阅读。
比较
products[i].name == "quit"
是错的。
你需要使用strcmp
(or strncmp
,正如 Vaibhav 指出的那样):
if ( strcmp(products[i].name,"quit") == 0 ) //0 indicates equality
break;
但由于这是 C++,我建议你使用std::string
代替char[]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)