如何解决C ++中的读写功能问题
我也遇到了C ++和C中的读写功能问题。
当我在代码中输入2个或多个name
和id
时,它将完美地写入文件,但是当我使用fread
读取文件时,它显示出一些奇怪的行为与我为不同输入输入的id
的值相同,但就名称而言,它为所有我最后输入的长度不同的输入打印相同的字符串。
示例:
输入:
2
aaa 1
bbbb 2
输出:
ID 1 Name bbb
ID 2 Name bbbb
它应该打印为:
ID 1 Name aaa
ID 2 Name bbbb
我的代码:
#include <bits/stdc++.h>
using namespace std;
struct person
{
int id;
string fname;
};
int main () {
FILE *outfile;
struct person input;
int num,ident;
string sname;
outfile = fopen ("C:\\Users\\Amritesh\\Desktop\\students.txt","w+");
if (outfile == NULL)
{
fprintf(stderr,"\nError opend file\n");
exit (1);
}
scanf("%d",&num);
for(int i=0;i<num;i++){
cin >> sname;
scanf("%d",&ident);
struct person student = {ident,sname};
fwrite (&student,sizeof(struct person),1,outfile);
}
fseek(outfile,SEEK_SET);
while(fread(&input,outfile)) {
cout << "ID " << input.id << " Name " <<input.fname << endl;
}
fclose (outfile);
return 0;
}
感谢您提前提出任何答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。