C ++中的读写功能问题

问题描述

我也遇到了C ++和C中的读写功能问题。

当我在代码中输入2个或多个nameid时,它将完美地写入文件,但是当我使用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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...