sinat_36027429
sinat_36027429
2017-11-26 15:56
采纳率: 100%
浏览 1.3k
已采纳

一个关于C语言文件输入输出的问题,主函数代码如下。问题在代码注释中

//按照主要问题的方向简化了原来的代码

#define plainplan "huaji"//文件名
int main(void)
{
int people = 0;
FILE*fp = fopen(plainplan, "rb+");//检查文件是否存在
if (fp == NULL)//创建文件
{
fp = fopen(plainplan, "wb+");
fwrite(&people, sizeof(int), 1, fp);//写入初始化数据
}
fread(&people, sizeof(int), 1, fp);
printf("%d\n", people);
puts("enter a new number:");
scanf("%d", &people);
//fp = fopen(plainplan, "rb+");//这行代码
/*
如果删除上面那行,不重新打开文件的话,下面的fwrite()函数就会无效
是不是每次打开文件,只能进行读操作或者写操作,不能进行完读操作之后再进行写操作。但我看的是《C Primer Plus》,并没有看到这种说话。求大佬点明一下我OTZ
*/
fwrite(&people, sizeof(int), 1, fp);
fclose(fp);
puts("done.");
system("pause");
return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • caozhy
    已采纳

    r是只读的意思,用wb+

    点赞 评论
  • sinat_36027429
    sinat_36027429 2017-11-26 16:12

    int main(void)
    {
    char choose;
    int flight_choose = 0;
    char all_choose[FUNCSIZE+1] = "abcdef";
    //找了点错误,但和主要问题没什么关系
    struct plainsize people[MAXSIZE];
    FILE*fp = fopen(plainplan, "rb+");//检查文件是否存在
    if (fp == NULL)//创建文件
    {
    fclose(fp);//错误
    fp = fopen(plainplan, "a");//模式错误
    chushi(people);

    点赞 评论
  • sinat_36027429
    sinat_36027429 2017-11-26 16:47

    找了原因,在“这行代码”的地方使用了rewind(fp);就解决了问题,关于这个我在书上只找到“标准I/O内幕”的半页说明,还不是很能理解文件的工作原理。

    点赞 评论

相关推荐