我不知道怎样才能在不能使用string和全局变量的情况才查找到文档制定内容和修改
而且头文件只能用以下那几个
假设txt内容是
这个游戏的名字是什么?斗地主
你玩过这个游戏吗?玩过
你喜欢这个游戏吗?喜欢
这个游戏的名字是什么?鼠来宝
你玩过这个游戏吗?没玩过
你喜欢这个游戏吗?不喜欢
在输出中显示回答是喜欢的游戏(包括游戏的名字和有没有玩过)
然后修改我实在是搞不明白不能用string的情况下,怎么修改txt文件内容
这是我写的程序
```c++
```c++
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
using namespace std;
const int ITEM = 10;
const int DEC = 130;
const int NAME = 120;
const int LIKE = 20;
const int PLAYED = 30;
struct item
{
char name[NAME];
char Description[DEC];
char like[LIKE];
char played[PLAYED];
int number{};
};
void read_item(item library[],int & num_of_item);
void display_item(item library[],int num_of_item);
void read_a_item(item & a_item);
void display_a_item(item & one_item);
int load(item library[]); //return the number read in
void save(item library[],int num_to_save);
int main()
{
//variables
item library[ITEM];
int num_of_item = 0;
num_of_item = load(library);
read_item(library,num_of_item);
cout << "num of game is: " <<num_of_item <<endl;
display_item(library,num_of_item);
save(library, num_of_item);
return 0;
}
void save(item library[], int num_to_save)
{
ofstream file_out;
file_out.open("game.txt");
if (file_out)
{
for (int i = 0; i < num_to_save; ++i)
{
file_out << library[i].name <<'~'
<< library[i].Description <<'~'
<< library[i].like <<'~'
<< library[i].played <<'~'
<< library[i].number <<endl;
}
file_out.close();
}
}
int load(item library[]) //reture read in
{
ifstream file_in; // be used to read from a file
int i = 0;
file_in.open("game.txt");
if (file_in)
{
file_in.get(library[0].name,NAME,'~');
file_in.ignore(100,'~');
while (!file_in.eof() && i < ITEM)
{
file_in.get(library[i].Description, DEC,'~');
file_in.ignore(100,'~');
file_in.get(library[i].like, LIKE,'~');
file_in.ignore(100,'~');
file_in.get(library[i].played,PLAYED,'~');
file_in.ignore(100,'~');
file_in >> library[i].number;
file_in.ignore(100,'\n');
++i;
file_in.get(library[i].name, NAME,'~');
file_in.ignore(100,'~');
}
file_in.close();
}
return i;
}
void read_item(item library[],int & num_of_item)
{
int i = num_of_item;
char response = 'n'; // allow the user dicide when to be done
cout <<"Do you want to read in a new game?";
cin >> response;
cin.ignore(100,'\n');
//read in the game if user want
while ('Y' == toupper(response) && i < ITEM)
{
read_a_item(library[i]);
cout <<"Another?";
cin >>response;
cin.ignore(100,'\n');
++i;
}
num_of_item = i;
}
void display_item(item library[],int num_of_item)
{
for(int i = 0; i < num_of_item;++i)
{ display_a_item(library[i]);
}
}
void read_a_item(item & a_item)
{
cout <<"游戏的名字是: ";
cin.get(a_item.name,NAME,'\n');
cin.ignore(100,'\n');
cout << "对游戏的描述: ";
cin.get(a_item.Description,DEC,'\n');
cin.ignore(100,'\n');
cout <<"你喜欢这个游戏吗? ";
cin.get(a_item.like,LIKE,'\n');
cin.ignore(100,'\n');
cout <<"你有玩过这个游戏吗";
cin.get(a_item.played,PLAYED,'\n');
cin.ignore(100,'\n');
cout <<"enter the member to play: ";
cin >> a_item.number;
cin.ignore(100,'\n');
}
void display_a_item(item & one_item)
{
cout << one_item.name <<endl
<< one_item.Description<<endl
<< one_item.like <<endl
<< one_item.played <<endl
<<"The mumber is: " << one_item.number <<endl;
}
我显示了文件的全部内容,但是不知道怎么只显示回答是喜欢的游戏。
把你的代码用代码的形式贴出来 帮你调一下~
string只是标识字符串而已,把文件中的相关内容进行存储的容器而已,你可以用c语言中的相关字符串处理逻辑来代替,比如 用malloc申请一段内存(char字符),或者用字符数组的形式。
至于你说的全局变量,只是形式而已,你可以用局部变量的方式啊,只是全局变量函数内部可以直接使用,而用局部变量的话,你在其他函数中使用时可以考虑用函数传参的方式。