我能够最终生成一个有关输入和显示n个学生详细信息(学生ID#,姓名和年龄)的工作代码...虽然名称不是全名,但我想将这些输入写入文本文件,然后从文本文件中读取。我将非常感谢您的帮助:
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <fstream>
using namespace std;
struct student
{
int sno, sage;
char sname[100];
};
int main(int e, char* argv[])
{
struct student s[e];
int i;
ofstream outfile;
outfile.open("info.txt");
printf("How many entries are you making?: ");
scanf("%d",&e);
printf(" \n");
printf("Please enter Student Information:\n");
for(i=0;i<e;++i)
{
s[i].sno=i+1;
printf("\nEnter Information for student %d\n",s[i]);
printf("================================\n");
cout<<"\nEnter (4 digits) student ID No: ";
cin>>s[i].sno;
cout<<"\nEnter student's name: ";
cin>>s[i].sname;
cout<<"\nAge of student: ";
cin>>s[i].sage;
printf("\n");
//If i do this, I get only first set of data
outfile <<s[i].sno<<" "<<s[i].sname<<" "<<s[i].sage<<endl;
/*I am trying to get data into txt file using the loop below but it looks odd and it collects some of the first set of data, and completes it like this: 1212 kop 23
1627953384 1629646589*/
/*for(i=0;i<e;++i)
{
outfile <<s[i].sno<<" "<<s[i].sname<<" "<<s[i].sage<<endl;
}*/
outfile.close();
}
printf("Displaying information of student(s):\n");
printf("==================================\n");
for(i=0;i<e;++i)
{
printf("\nInformation for Student %d:\n",i+1);
cout<<"\nStudent ID:"<<s[i].sno;
cout<<"\nStudent name: "<<s[i].sname;
cout<<"\nAge of student: "<<s[i].sage;
printf("\n\n");
}
return 0;
}
答案 0 :(得分:0)
我建议从一个写入文件的简单程序开始:
#include <fstream>
#include <iostream>
#include <cstdlib>
int main(void)
{
std::ofstream output_file("text.txt");
std::cout << "Writing to output file.\n";
output_file << "This is my text.\n";
output_file.flush();
std::cout << "Finished writing to file.\n";
output_file.close();
std::cout << "Paused. Press Enter to continue.\n";
std::cin.ignore(100000, '\n');
return EXIT_SUCCESS;
}
执行上述程序后,您应该验证文本文件是否包含正确的文本。
接下来,您可以添加其他代码,例如提示用户并获取输入。
答案 1 :(得分:0)
我认为您不知道如何通过文件读取或写入。这就是你遇到问题的原因。人们通常使用两种方式。通过这两个示例教程,以便很好地理解这些方法。 - c methods - c++ methods
这是我修改过的代码,可以使用这两种方法从文件中读取和写入 -
Given Input file - student.txt. //first line No. of input
2
1234 manish 34
4321 mukesh 43
Code
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
struct student
{
int sno, sage;
char sname[50];
};
//Read data using C Method
void ReadAndWriteCMethod(){
student s[100];
FILE* f;
f = fopen("student.txt","r");
int N;
fscanf(f,"%d",&N);
**//Reading from file**
for(int i=0; i<N; i++){
fscanf(f,"%d %s %d",&s[i].sno, &s[i].sname, &s[i].sage);
}
fclose(f);
**//Writing over file**
f = fopen("wstudent1.txt","w+");
for(int i=0; i<N; i++){
cout<<s[i].sno<<" "<<s[i].sname<<" "<<s[i].sage<<endl;
fprintf(f,"%d %s %d\n",s[i].sno,s[i].sname,s[i].sage);
}
fclose(f);
}
//Reading and writing using C++
void ReadAndWriteCPlusPlusMethod(){
student s[100];
**// Reading data**
std::ifstream fin("student.txt");
char s2[100];
int N; fin>>N;
for(int i=0; i<N; i++){
fin>>s[i].sno>>s[i].sname>>s[i].sage;
cout<<s[i].sno<<" "<<s[i].sname<<" "<<s[i].sage<<endl;
}
fin.close();
**//Writing data**
std::ofstream fout("wstudent2.txt");
for(int i=0; i<N; i++){
fout<<s[i].sno<<" "<<s[i].sname<<" "<<s[i].sage<<endl;
}
fout.close();
}
int main()
{
ReadAndWriteCMethod();
ReadAndWriteCPlusPlusMethod();
}
运行后,这将生成两个文件wstudent1.txt和wstudent2.txt文件。