我是学生,我必须创建一个程序并告知程序的使用,所以如果文件不存在,我必须创建它;如果它存在,读取并保存变量,如果它满足特定条件,它必须增加它们的值,最后程序必须用新值重写文件,保存并关闭它。我做了一个代码,但它工作不好,我不知道哪里是错误。请帮帮我。
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int varAux1,varAux2,varAux3,varAux4;
int a;
int var1,var2,var3,var4;
ifstream archivoLectura;
archivoLectura.open("informeuso.txt");
if (archivoLectura.fail())
{
ofstream archivoLectura;
archivoLectura.open("informeuso.txt");
archivoLectura<<"linea 1: "<<0<<"\n";
archivoLectura<<"linea 2: "<<0<<"\n";
archivoLectura<<"linea 3: "<<0<<"\n";
archivoLectura<<"linea 4: "<<0<<"\n";
archivoLectura.close();
archivoLectura.open("informeuso.txt");
}
archivoLectura>>var1;
archivoLectura>>var2;
archivoLectura>>var3;
archivoLectura>>var4;
varAux1 = var1;
varAux2 = var2;
varAux3 = var3;
varAux4 = var4;
archivoLectura.close();
cout<<"hola"<<endl;
cout<<"programa prueba"<<endl;
cout<<"enter value from 0 to 9"<<endl;
cout<<"a: ";
cin >> a;
if (a>0 && a <3)
{
var1 = varAux1 + 1;
}
else if(a>2 && a <6)
{
var2 = varAux2 + 1;
}
else if (a>5 && a<8)
{
var3 = varAux3 +1;
}
else
{
var4 = varAux4 + 1;
}
ofstream archivoEscritura;
archivoEscritura.open("informeuso.txt");
archivoEscritura<<"line 1-2: "<<var1<<"\n";
archivoEscritura<<"line 3-5: "<<var2<<"\n";
archivoEscritura<<"line 6-7: "<<var3<<"\n";
archivoEscritura<<"line other: "<<var4<<"\n";
archivoEscritura.close();
system("pause");
return 0;
}
答案 0 :(得分:0)
我看到两个不同的变量具有完全相同的名称,但是不同的类型和不同的范围。
你认为这有点令人困惑吗?
ifstream archivoLectura;
ofstream archivoLectura;
<小时/> 按照您的代码:
第1步:
ifstream archivoLectura;
archivoLectura.open("informeuso.txt"); // This might fail, and you check for archivoLectura.fail()
第2步:
archivoLectura>>var1; // trying to read from the ifstream, which failed to open.
archivoLectura>>var2; // The ofstream (which was opened successfully) has gone out of scope.
archivoLectura>>var3;
archivoLectura>>var4;
在这里,您尝试从我们知道 无法打开 的文件中读取。
这对我来说似乎是个大问题。
答案 1 :(得分:0)
检查这个....我认为这是解决方案
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int varAux1,varAux2,varAux3,varAux4;
int a;
int var1,var2,var3,var4;
fstream archivoLectura;
archivoLectura.open("informeuso.txt" , ios::in);
if (archivoLectura.fail())
{
archivoLectura.open("informeuso.txt" , ios::out);
archivoLectura<<0<<" ";
archivoLectura<<0<<" ";
archivoLectura<<0<<" ";
archivoLectura<<0<<" ";
archivoLectura.close();
archivoLectura.open("informeuso.txt" , ios::in);
}
archivoLectura>>var1;
archivoLectura>>var2;
archivoLectura>>var3;
archivoLectura>>var4;
cout<<var1<<var2<<var3<<var4;
varAux1 = var1;
varAux2 = var2;
varAux3 = var3;
varAux4 = var4;
archivoLectura.close();
cout<<"hola"<<endl;
cout<<"programa prueba"<<endl;
cout<<"enter value from 0 to 9"<<endl;
cout<<"a: ";
cin >> a;
if (a>0 && a <3)
{
var1 = varAux1 + 1;
}
else if(a>2 && a <6)
{
var2 = varAux2 + 1;
}
else if (a>5 && a<8)
{
var3 = varAux3 +1;
}
else
{
var4 = varAux4 + 1;
}
fstream archivoEscritura;
archivoEscritura.open("informeuso.txt" , ios::out);
archivoEscritura<<var1<<" ";
archivoEscritura<<var2<<" ";
archivoEscritura<<var3<<" ";
archivoEscritura<<var4<<" ";
archivoEscritura.close();
system("pause");
return 0;
}