Chenzhjn17 2021-04-14 08:45 采纳率: 60%
浏览 26
已采纳

Del()函数中,为什么gets()没用(单独跑可以,放在一起就不行了)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 2//电影信息的行数(用scanf进行修改)
void file_write(char *day1,char *name1,char *time1,char *place1)//管理员增加电影信息
{
    int i;
    FILE *fpwrite;
    fpwrite=fopen("D:\\电影信息2.txt","a+");
    if(fpwrite==NULL)
    {
        printf("open failure!");
        exit(1);
    }
    fprintf(fpwrite,"日期\t影名\t时间\t放映厅\n");
    for(i=0;i<N;i++)
    {
        printf("please input day name time place:\n");
        scanf("%s%s%s%s",day1,name1,time1,place1);
        fprintf(fpwrite,"%s\t%s\t%s\t%s\n",day1,name1,time1,place1);//(输入时用空格补齐)
    }
    fclose(fpwrite);
}
void file_read(char *day2,char *name2,char *time2,char *place2)//读取电影信息
{
    int i;
    FILE *fpread;
    fpread=fopen("D:\\电影信息2.txt","r");
    if(fpread==NULL)
            
    {
        printf("open failure!");
        exit(1);
    }
    
    for(i=0;i<(N+1);i++)
    {
        fscanf(fpread,"%s\t%s\t%s\t%s",day2,name2,time2,place2);
        printf("%s\t%s\t%s\t%s\n",day2,name2,time2,place2);
    }
    
}
void Del()
{
    FILE *fin,*ftp;
    char a[80]; 
    char str[80];
    fin=fopen("D:\\电影信息2.txt","r");//读取原文件
    ftp=fopen("D:\\tmp.txt","w");//建立新文件 
    if(fin==NULL||ftp==NULL)
    {
        printf("open failure!");
        exit(1);
    }
    printf("请输入要删除的信息:\n");
    fflush(fin);
    gets(str);
    while(fgets(a,80,fin))//从原文件读取一行
    {
        a[strlen(a)-1]='\0';
        if(strcmp(str,a)!=0)
        {
            fputs(a,ftp);
            fprintf(ftp,"\n");
        }
    }
    fclose(fin);
    fclose(ftp);
    remove("D:\\电影信息2.txt");
    rename("D:\\tmp.txt","D:\\电影信息2.txt");
}
int main()
{
    char day[80],name[80],time[80],place[80];
    file_write(day,name,time,place);
    file_read(day,name,time,place);
    Del();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • cpp_learners 2021-04-14 09:13
    关注

     fflush(fin);改成fflush(stdin);试试。

    或者改成

    char c;

    while ((c = getchar()) != '\n');

     

    参考:https://blog.csdn.net/cpp_learner/article/details/104178769?spm=1001.2014.3001.5502

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看