鱼C论坛

 找回密码
 立即注册
查看: 2987|回复: 5

课程设计的文件操作问题

[复制链接]
发表于 2012-2-16 09:39:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int x;
FILE *fp1;
fp1=fopen("1班花名册.txt","at+");
printf("\n");

printf("请按照学号、姓名、性别的格式输入学生信息\n");
for(x=0;x<50;x++)
{

  scanf("%d %s %s",&Class.studentID,&Class.studentName,&Class.studentGender);
  fprintf(fp1,"%d %s %s\n",Class.studentID,Class.studentName,Class.studentGender);
}
fclose(fp1);
fp1=fopen("1班花名册.txt","at+");

while (fscanf(fp1,"%d %s %s",&Class.studentID,&Class.studentName,&Class.studentGender)!=EOF)
{
  printf("%d %s %s\n",Class.studentID,Class.studentName,Class.studentGender);        
     fclose(fp1);
}
以上这段编程,如果没有输入够50个的时候,然后打开存放文件观看的时候,就会出现剩下的都会重复变成最后一个的。。。请问应该如何将这种情况去掉。。。就算没有输入够50个,也不会重复最后一个直到满50个
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 11:14:10 | 显示全部楼层
1.你是用ctrl x中止输入吗?你应该要检查一下scanf的输入是否有误.如果输入有误就中止循环你可以改成这样:
int x;
int flag, index = 0;
FILE *fp1;
fp1=fopen("1班花名册.txt","at+");
printf("\n");
printf("请按照学号、姓名、性别的格式输入学生信息\n");
while(true)
{
    printf("请输入第%d个学生的信息:", ++ index);
    flag = scanf("%d %s %s",&Class.studentID,&Class.studentName,&Class.studentGender);
    if (!flag)
    {
       break;
    }
  fprintf(fp1,"%d %s %s\n",Class.studentID,Class.studentName,Class.studentGender);  

}
fclose(fp1);
printf("你本次输入了%d个学生的信息,全部学生信息如下:\n", index);
fp1=fopen("1班花名册.txt","at+");
while (fscanf(fp1,"%d %s %s",&Class.studentID,&Class.studentName,&Class.studentGender)!=EOF)
{
  printf("%d %s %s\n",Class.studentID,Class.studentName,Class.studentGender);        
  
}
fclose(fp1);
2.你输出的时候fclose(fp1);放在循环里面,第一次进入循环的时候就中止了..应该放到循环外面关闭文件.
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 13:05:58 | 显示全部楼层
我等一下试一下。。。谢谢你啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 15:33:11 | 显示全部楼层

我刚才试了一下。。。但是运行的时候要按两次ctrl+x才停止,而且显示的时候是显示按了d个学生信息,但我只是按了d-1个而已
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 15:38:35 | 显示全部楼层
ligangbin117 发表于 2012-2-16 11:14
1.你是用ctrl x中止输入吗?你应该要检查一下scanf的输入是否有误.如果输入有误就中止循环你可以改成这样:
...

可不可以帮我弄一下只要按一次ctrl+x就结束呢???
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 17:18:53 | 显示全部楼层
你随便输入一个不合法的学号回车就会退出.这里检测的就是scanf这个函数.
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-11 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表