943566987 发表于 2014-11-15 22:24:32

C++全局函数问题

#include<iostream>
#include<fstream>
#include<windows.h>
using namespace std
structFishOil
{
std::string name
std::string uid
char sex
};
bool InitFishC();
bool ReadFishC();
void RecordFishC();
bool WriteFishC(FishOil *OilData);

int main()
{
int i;
InitFishC();
while(1)
{
std::cout<<"请选择需要进行的操作: \n";
std::cout<<"1. 打印数据到屏幕\n";
std::cout<<"2. 录入数据\n";
std::cout<<"3. 退出程序\n";
std::cin>>i;
switch(i)
{
case 1:
   if(ReadFishC())
    std::cout<<"成功读取文件:";
   else
    std::cout<<"读取文件失败:";
   break;
case 2:
   RecordFishC();
   break;
case 3:
   return 0;
}
}
std::cout<<"初始化失败T_T......\n\n";
return 0;
}
bool InitFishC()
{
FishOil OilInit = {"小甲鱼", "fishc00001", 'M'};
if(WriteFishC(&OilInit) == false)
std::cout << "初始化失败T_T\n";
}
bool ReadFishC()
{
std::string temp;
std::ifstream fileInput("FishC.txt");
if(fileInput.is_open ())
{
std::cout<<"\n正在输出记录数据...... ";
   for( int i =0; i<=100; i++)
   {
    std::cout.width(3);
    std::cout << i << "%";
    std::cout<<"\b\b\b\b";   
   }
   std::cout <<"\n\n";
   std::cout<<" 姓名 " << "身份证" << " 性别 " << "\n\n";
   while (std::getline(fileInput.temp))
   {
    std::cout << temp << " ";
    std::cout << "\n";
   }
   std::cout <<"\n\n";
    return true;
}
else
return false;
}
void RecordFishC()
{
char goon,Save;
FishOil OilData;
FishOil *pOilData;
goon ='Y';
while ('Y' ==goon)
{
std::cout << "请输入鱼C账号: ";
std::cin >> OilData.name;
std::cout<<"请输入鱼C身份证:";
std::cin >> OilData.uid;
std::cout <<"请输入性别:";
std::cin >> OilData.sex;
std::cout <<"录入成功, 请问需要保存吗?(Y/N)";
std::cin >>Save;
if( 'Y' ==Save)
{
   pOilData = &OilData;
   if(WriteFishC(pOilData))
    std::cout<< "成功写入文件^_^\n";
   else
    std::cout << "写入文件失败T_T\n";
}
else
{
   return ;
}
std::cout<<"/n请问需要再次录入吗?(Y/N)";
std::cin >>goon;
}
}
bool WriteFishC(FishOil *pOilData)
{
std::ofstream fileOutput("FishC.txt", std::ios::app);

if(fileOutput.is_open ())
{
fileOutput << pOilData->name << " ";
fileOutput << pOilData->uid << " ";
fileOutput << pOilData->sex << "\n";
fileOutput.close ();
std::cout << "数据成功保存到FishC.txt\n\n";
}
else
std::cout <<"保存失败T_T\n";
}

编译的时候编译器出现了这样的错误 点击这个错误提示的时候是在structFishOil函数这里报错的 我在百度上搜索了一下
说是头文件定义错了
error C2143: syntax error : missing ';' before '<class-head>'
fatal error C1004: unexpected end of file found
琢磨了好久我把structFishOil函数放在bool WriteFishC(FishOil *OilData);函数下面缺发现编译器是报错提示是在
bool InitFishC();函数这里 想问问到底是哪里写错了
syntax error : missing ';' before identifier 'bool'
fatal error C1004: unexpected end of file found

只爱你一人 发表于 2014-11-17 06:47:53

你的using namespace std语句,还有结构里面的语句都没有用";"分号结尾当然错误!!!!!

naonaoguang 发表于 2014-11-18 10:08:47

两包烟的钱,把不了妹买不了田,不如拿来支持小甲鱼推出更多原创教学视频!

943566987 发表于 2014-11-18 21:52:45

只爱你一人 发表于 2014-11-17 06:47
你的using namespace std语句,还有结构里面的语句都没有用";"分号结尾当然错误!!!!!

你是说 using namespace std语句加分号也报错呀

只爱你一人 发表于 2014-11-21 08:42:02

E~~~~~~~发现你一个严重错误,第68行
while (std::getline(fileInput, temp))   //fileInput和temp之间是逗号,不是句点!
我把它改后就成功运行了!
还有个小问题,加了using namespace std后,所有的std::前缀都可以去掉了!

lyjztz 发表于 2014-11-21 22:50:36

                长

追忆lh 发表于 2014-11-27 15:20:12

structFishOil
{
std::string name
std::string uid
char sex
};
这里面的语句都没有分号啊!

z294354069 发表于 2014-11-28 10:25:31

程序有以下几个不对的地方:
1、using namespace std;该语句后面要加上“;”号。
2、结构体FishOil里定义变量要加“;”号;
3、bool ReadFishC()函数中,读取文件while语句改成while (std::getline(fileInput,temp));楼主原先是“.”号,应改为","号。

上述修改完后,在我的电脑上程序能编译通过。。

帅哥星 发表于 2014-12-2 20:04:12

tutuqie 发表于 2015-4-3 10:27:00

C:\Users\Administrator\Desktop\QQ截图20150403102604.png

tutuqie 发表于 2015-4-3 10:31:05

tutuqie 发表于 2015-4-3 10:27


发错了,其实我是想截图来着。问题是:程序运行没问题,只是每次刚开始运行就会出现
                                 数据成功保存到FishC.txt

                                 初始化失败T_T
                                 请选择需要进行的操作:
                              1. 打印数据到屏幕
                              2. 录入数据
                              3. 退出程序

这个初始化失败是几个意思啊?看不出来问题在哪儿?
接下来进行操作没有任何问题,求解答:cry
页: [1]
查看完整版本: C++全局函数问题