如何正确使用结构数组?

时间:2013-12-02 20:53:50

标签: c++ function

我试图能够调用vendingmachine函数并让它给我一个表格,我从文件中得到的东西,但它给了我疯狂的数字,如-858993460。我必须能够在调用函数之前更改单个金额和价格,以便它可以给我不同的数字。

可乐 0.75 20 Ruby Red Blast 1.00 10 柠檬嘶嘶声 0.75 8 葡萄苏打水 0.90 5 柑橘翻转 0.85 0 哈瓦内罗惊喜 0.80 11 ^^这是使用

的文本文件
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;



struct soda{
    string name;
    double price;
    int amount;
};

void vendingmachine(struct soda[6]);

int main(){
ifstream inFile;


soda soda[6];


inFile.open ("machine.txt");
if ( inFile.fail() )
{
    cout << "Error: Data file could not be opened" << endl;
    exit (EXIT_FAILURE);
}

for(int i=0; i < 6; i++){
    getline(inFile, soda[i].name);
        inFile >> soda[i].price;
        inFile >> soda[i].amount;
        inFile.ignore(100,'\n');
}


    cout << "Welcome to the vending machine!" << endl;
    cout << endl;



     vendingmachine(soda);

return 0;
}

void vendingmachine(struct soda soda[6]){



    cout << "***************************************************************" << endl;
    cout << "        " << "Drink Name" << "      " << "Price Per Can" << "         " << "Number in Machine" << endl;

    for( int i=0; i < 6; i++){

        cout << setw(17) << soda[i].name << setw(16) << soda[i].price << setw(20) << soda[i].amount << endl;
    }
     cout << "***************************************************************" << endl;

}

谢谢大家,我把它改成了应该如何。

2 个答案:

答案 0 :(得分:3)

您正在声明一个局部变量soda并在函数

中对其进行操作
void vendingmachine(struct soda[6]){
    soda soda[6];

您需要操作调用者的数组

void vendingmachine(struct soda soda[6]){
    //soda soda[6];

答案 1 :(得分:0)

将您的功能更改为:

void vendingmachine(struct soda soda[6]){

cout << "***************************************************************" << endl;
cout << "        " << "Drink Name" << "      " << "Price Per Can" << "         " << "Number in Machine" << endl;

for( int i=0; i < 6; i++){

    cout << setw(17) << soda[i].name << setw(16) << soda[i].price << setw(20) << soda[i].amount << endl;
}
 cout << "***************************************************************" << endl;

}

THEN!

转到您从文本文件接收数据的循环,然后输入:

cout << soda[i].name << endl;

(现在运行程序)

您会注意到整条第一行归于可乐,然后有5条空白行被打印出来。

现在您需要做的就是确保文本文件中的变量正确地放入您的结构中,您很快就会完成。