gpt4 book ai didi

c++ - 如何使用 for 循环多次提示用户输入不同的文件名?

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:17 25 4
gpt4 key购买 nike

我正在尝试使用我的 C++ 程序打开和读取用户输入文件。

我的程序有两个函数; Open_Read()Enter_Filename()

Enter_Filename 要求用户输入输入文件名(从 1 到 4)。

函数Open_Read 打开并读取文件的内容并显示它。

nb = 1 (1 <= nb <=4) 程序运行,但是从 nb >=2 程序无法打开文件(或无法找到文件)。

谁能帮我找出问题所在?

#include <iostream>
#include <fstream>

using Namespace std;

void Enter_Filename(const int& m, int& nb, char name[], double yy[], double xx[]);
void Open_Read(ifstream&, char filename[], char name[], double yy[], double xx[], int &n, double &sd, char set1[]);

double y[256], x[256];

int main()
{
ifstream in;
char filename[7];
char name[7];
char set1[20];
double yy[4];
double xx[4];
int n = 0;
double sd = 0;
int nb;
int m = 4;

Enter_Filename(m, nb, filename, &yy[4], &xx[4]);

for (int i = 1; i <= nb; i++)
{
Open_Read(in, &filename[i], &name[i], &yy[i], &xx[i], n, sd, &set1[i]);
}

cout << "\n";
system("PAUSE");

return 0;
}

这里的函数 Enter_Filename:

  void Enter_Filename(const int& m, int& nb, char name[], double yy[], double xx[])
{
cout << "Please Enter the number of articles (1 <= nb <= 4)\n"
"Nb =";
cin >> nb;

if (nb <= m)
{
for (int j = 1; j <= nb; j++)
{
cout << j << ".Article (e.g. input.txt, input1.txt...) =";
cin >> &name[j];
cout << "yy(" << j << ") =";
cin >> yy[j];
cout << "xx(" << j << ") =";
cin >> xx[j];
}
}
}

和函数Open_Read:

void Open_Read(ifstream&, char filename[], char name[], double yy[], double xx[], int& n, double &sd, char set1[])
{

ifstream inf;

//cout << "Enter the file name to be opened: ";

//cin >> fileName;

inf.open(filename, ios::in);

if (inf.fail())
{
cout << "Opening " << filename << " file for reading\n";
cout << "---------------------------------------\n";
cout << "The " << filename << " file could not be opened!\n";
cout << "Possible errors:\n";
cout << "1. The file does not exist.\n";
cout << "2. The path was not found.\n";
exit(1);
}
else
{
cout << "fileName:" << filename << endl;
inf >> name >> set1;
inf.ignore(numeric_limits<streamsize>::max(), '\n');
inf >> n >> sd;

for (int i = 1; i <= n; i++)
{
inf >> y[i] >> x[i];

printf("%3i: %10.3f %10.3f\n", i, y[i], x[i]);

}

y[0] = *yy;
x[0] = x[0] + *xx;

for (int i = 1; i <= n; i++)
{
y[i] = y[i - 1] + y[i];
x[i] = x[i] + *xx;
}
}

inf.close();

cout << "NAME:" << name << endl;
cout << "SetID:" << set1 << endl;
cout << "N =" << n << endl;
cout << "SubD =" << sd << endl;

if (inf.fail())
{
cout << "\nThe file " << filename << " could not be closed!\n";
exit(1);
}
return;
}

我使用两个文件:input.txtinput1.txt:

 input.txt

INPUT.TXT
1S12-111-433-3245 K
5 12.0000
0.000 12.290
1.840 0.170
1.480 6.190
1.220 17.100
1.040 25.000


input1.txt

INPUT1.TXT
1S12-111-533-3245 P
3 12.0000
.000 11.780
0.150 34.820
1.840 24.810

最佳答案

这是您的应用程序的工作版本:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iosfwd>


using namespace std;
void Enter_Filename(const int& m, int& nb, char name[], double yy[], double xx[], int j);
void Open_Read(ifstream&, char filename[], char name[], double yy[], double xx[], int &n, double &sd, char set1[]);

double y[256], x[256];

int main()
{
ifstream in;
char filename[4][10];

char name[7];
char set1[20];
double yy[4];
double xx[4];
int n = 0;
double sd = 0;
int nb;
int m = 4;

cout << "Please Enter the number of articles (1 <= nb <= 4)\n"
"Nb =";
cin >> nb;

if (nb <= m)
{
for (int j = 0; j < nb; j++)
{
Enter_Filename(m, nb, filename[j], &yy[4], &xx[4], j);
}
}

for (int i = 0; i < nb; i++)
{
Open_Read(in, filename[i], &name[i], &yy[i], &xx[i], n, sd, &set1[i]);
}

cout << "\n";
system("PAUSE");

return 0;
}


void Enter_Filename(const int& m, int& nb, char name[], double yy[], double xx[], int j)
{

cout << j << ".Article (e.g. input.txt, input1.txt...) =";
cin >> &name[0];
cout << "yy(" << j << ") =";
cin >> yy[j];
cout << "xx(" << j << ") =";
cin >> xx[j];

}





void Open_Read(ifstream&, char filenames[], char name[], double yy[], double xx[], int& n, double &sd, char set1[])
{

ifstream inf;

//cout << "Enter the file name to be opened: ";

//cin >> fileName;
char filename[11];
memcpy(filename, filenames, 11);
filename[10] = '\0';

inf.open(filename, ios::in);

if (inf.fail())
{
cout << "Opening " << filename << " file for reading\n";
cout << "---------------------------------------\n";
cout << "The " << filename << " file could not be opened!\n";
cout << "Possible errors:\n";
cout << "1. The file does not exist.\n";
cout << "2. The path was not found.\n";
exit(1);
}
else
{
cout << "fileName:" << filename << endl;
inf >> name >> set1;
inf.ignore(numeric_limits<streamsize>::max(), '\n');
inf >> n >> sd;

for (int i = 1; i <= n; i++)
{
inf >> y[i] >> x[i];

printf("%3i: %10.3f %10.3f\n", i, y[i], x[i]);

}

y[0] = *yy;
x[0] = x[0] + *xx;

for (int i = 1; i <= n; i++)
{
y[i] = y[i - 1] + y[i];
x[i] = x[i] + *xx;
}
}

inf.close();

cout << "NAME:" << name << endl;
cout << "SetID:" << set1 << endl;
cout << "N =" << n << endl;
cout << "SubD =" << sd << endl;

if (inf.fail())
{
cout << "\nThe file " << filename << " could not be closed!\n";
exit(1);
}
return;
}

我没有控制你的计算结果,我只是确保它现在打开你的文件

关于c++ - 如何使用 for 循环多次提示用户输入不同的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com