问题描述
我也遇到了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 (将#修改为@)