标题:帮忙看看哪里出错了
只看楼主
纸T0
Rank: 4
来 自:
等 级:业余侠客
威 望:2
帖 子:34
专家分:216
注 册:2013-11-16
结帖率:100%
已结贴  问题点数:20 回复次数:3 
帮忙看看哪里出错了
程序代码:
#include <string.h>
#include <iostream>
using namespace std;
struct ps {
    int age;
    string name;
};
ps *p = new ps;
int main()
{
    FILE *pa;
    pa = fopen("a.txt", "w+");
    scanf("%d,%s", p);
    fwrite(&(*p), sizeof(*p), 1, pa);
    fread(&(*p), sizeof(*p), 1, pa);
    printf("%d, %s", (*p).age, (*p).name);
    delete p;
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 出错 name int age sizeof 
2017-10-03 08:25
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:10 
程序代码:
#include <string.h>
#include <iostream>
using namespace std;
struct ps {
    int age;
    string name;
};
ps *p = new ps;
int main()
{
    FILE *pa;
    pa = fopen("a.txt", "w+");
    scanf("%d,%s", p->age,p->name);
    fwrite(&(*p), sizeof(*p), 1, pa);
    rewind(pa);
    fread(&(*p), sizeof(*p), 1, pa);
    printf("%d, %s", (*p).age, (*p).name);
    delete p;
    system("pause");
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2017-10-04 10:54
纸T0
Rank: 4
来 自:
等 级:业余侠客
威 望:2
帖 子:34
专家分:216
注 册:2013-11-16
得分:0 
以下是引用炎天在2017-10-4 10:54:31的发言:

#include <string.h>
#include <iostream>
using namespace std;
struct ps {
    int age;
    string name;
};
ps *p = new ps;
int main()
{
    FILE *pa;
    pa = fopen("a.txt", "w+");
    scanf("%d,%s", p->age,p->name);
    fwrite(&(*p), sizeof(*p), 1, pa);
    rewind(pa);
    fread(&(*p), sizeof(*p), 1, pa);
    printf("%d, %s", (*p).age, (*p).name);
    delete p;
    system("pause");
    return 0;
}

这段代码输入3 张三
程序会没响应。
程序代码:
#include <string>
#include <iostream>
using namespace std;
struct ps {
    int age;
    string name;
};
ps *p = new ps;
int main()
{
    FILE *pa;
    pa = fopen("a.txt", "w+");
    if (pa == NULL)
    {
        printf("打开文件失败\n");
    }
    else
    {
        printf("打开文件成功\n");
    }
    
        //scanf("%d,%s", p);
        cin >> (*p).age>>(*p).name;
        fwrite(&(*p).age, sizeof((*p).age), 1, pa);
        fwrite(&(*p).name,sizeof((*p).name),1,pa);
        fread(pa, sizeof(char), 1, pa);
        //printf("%d, %s", *p);
        cout << (*p).age<<' '<< (*p).name;
        fclose(pa);
        
    delete p;
    system("pause");
    return 0;
}

我还有问题。
输入3 中华人民共和国后
a.txt文件中是这样的,有好多个屯是怎么回事


2017-10-04 14:58
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
得分:10 
fwrite和fread 一般用于二进制文件的写入和读取。文本文件容易出错。还有文件的写入和读取是两个步骤,写入流和读取流。所以应该创建两个流,你的写入和读取共用一个流,我没这么用过

cout<<"输入年龄和姓名: ";
    cin >> (p->age) >>(p->name);
    //写入流
    FILE *pout = fopen("a.txt", "wb");
    fwrite(p, sizeof(ps), 1, pout);   
    fclose(pout);
    delete p;
   
    //读取流
    FILE* pin = fopen("a.txt","rb");
    ps* pp= new ps;
    fread(pp, sizeof(ps), 1, pin);
    cout<<"你输入的信息为:"<<endl;
    cout << (pp->age)<<' '<< (pp->name)<<endl;
    fclose(pout);   
    delete pp;

当输入的名字过长时,会出现错误,可能是String类默认字符长度的问题。
2017-10-05 19:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481099-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.799292 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved