車のリスト(年、モデル、価格、利用可能な場合)を含むファイルを読み込むレンタルプログラムを作成しようとしています。 私はまた、すべての車を表示し、ユーザーに特定の車を見せてもらうなどのオプションを作らなければなりません(たとえば、1と入力し、テキストファイルの上の車を表示します)。これは私が混乱している場所で、car1、car2などの車をいくつか作ってみましたが、最初に読み込んだ車をcar1に登録するのに問題があります。データ構造を使用して特定の文字配列を別々に登録する
これはサンプルファイルです。
CarData.txt
2014 Toyota Tacoma 115.12 1
2012 Honda CRV 85.10 0
2015 Ford Fusion 90.89 0
2013 GMC Yukon 110.43 0
2009 Dodge Neon 45.25 1
2011 Toyota Rav4 65.02 1
2012 Mazda CX5 86.75 1
2016 Subaru Outback 71.27 0
2015 Ford F150 112.83 1
2010 Toyota Corolla 50.36 1
ソースコード:ここ
#include <iostream>
#include <fstream>
using namespace std;
struct car
{
int year;
char make[10];
char model[10];
float price;
int available;
}car1[1], car2[1], car3[1], car4[1], car5[1], car6[1], car7[1], car8[1], car9[1], car10[1];
void copy_string(char d[][50], char s[][50]);
int my_strcmp(char *a, char *b);
// Main Function
int main()
{
// declare variables
int choice;
car carLib[10];
char array[30][50];
char filename[10];
ifstream carInData;
//prompt user for input file
cout << " Enter file name: ";
cin >> filename;
cout << " 1 - Show Cars\n";
cout << " 2 - Rental Cost\n";
cout << " 3 - Most Expensive Car\n";
carInData.open(filename);
cin >> choice;
if(carInData.is_open());
{
int count = 0;
// read list of names into array
for(count; count < 1; count++){
carInData >> car1[count].year >> car1[count].make >> car1[count].model >> car1[count].price >> car1[count].available;
carInData >> car2[count].year >> car2[count].make >> car2[count].model >> car2[count].price >> car2[count].available;
switch (choice){
case 1:
cout << car1[count].year << " " << car1[count].make << " " << car1[count].model << " " << car1[count].price << " " << car1[count].available << " " << "\n";
cout << car2[count].year << " " << car2[count].make << " " << car2[count].model << " " << car2[count].price << " " << car2[count].available << " " << "\n";
break;
}
}
}
return 0;
}
// copy function
void copy_string(char d[], char s[]) {
int c = 0;
while (s[c] != '\0') {
d[c] = s[c];
c++;
}
d[c] = '\0';
}
// string copy
int my_strcmp(char *a, char *b)
{
while (*a && *b && *a == *b) { ++a; ++b; }
return *a - *b;
}
文字列を扱うときは、実際には 'std :: string'を使用する必要があります。 – NathanOliver
これは100%Cです。実際にC++でプログラミングしている場合は、 'std :: string'、' std :: vector'などの便利なライブラリヘルパークラスを使用してください。 –
@NathanOliverデータ文字列型は使用できません。 –