大哥帮查一下错,文件处理,本来是可以运行的没有错。

yi19861209 2017-07-27 10:44:38
#include"stdio.h"
#include"stdlib.h"
typedef struct staff{
int number; //号码
char name[8]; //姓名
char sex[4]; //性别
int age; //年龄
char abode[20]; //住宅
int wage; //工资
char health[8]; //健康
char culture[8]; //文化
}ff;
int main(){
FILE *fp,*fp1;
ff jg[5];
int i=0;
fp=fopen("employee.txt","r");
fp1=fopen("employee1.txt","w");
while(!feof(fp)){
fscanf(fp,"%d %s %s %d %s %d %s %s\n",&jg[i].number,jg[i].name,jg[i].sex,&jg[i].age,jg[i].abode,&jg[i].wage,jg[i].health,jg[i].culture);
fprintf(fp1,"%d %s %d\n",jg[i].number,jg[i].name,jg[i].wage);
i++;
}
fclose(fp);
fclose(fp1);
return 0;
}
//本来是可以运行的我试了好几次都没有错,过了一下不知道怎么了就不行了。我都是用编辑器输入
...全文
176 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-07-28
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

typedef struct staff{
    int number; //号码
    char name[8]; //姓名
    char sex[4]; //性别
    int age; //年龄
    char abode[20]; //住宅
    int wage; //工资
    char health[8]; //健康
    char culture[8]; //文化
}ff;

int main()
{
    FILE *fp,*fp1;
    ff jg[5];
    int i=0;
    fp=fopen("employee.txt","r");
    if (!fp) {
        fprintf(stderr, "Open file error!\n");
        return -1;
    }
    fp1=fopen("employee1.txt","w");
    if (!fp1) {
        fprintf(stderr, "Open error!");
        return -1;
    }
    fscanf(fp,"%d %s %s %d %s %d %s %s\n",&jg[i].number,jg[i].name,jg[i].sex,&jg[i].age,jg[i].abode,&jg[i].wage,jg[i].health,jg[i].culture);
    while(!feof(fp)){
        fprintf(fp1,"%d %s %d\n",jg[i].number,jg[i].name,jg[i].wage);
        i++;
        fscanf(fp,"%d %s %s %d %s %d %s %s\n",&jg[i].number,jg[i].name,jg[i].sex,&jg[i].age,jg[i].abode,&jg[i].wage,jg[i].health,jg[i].culture);
    }
    fclose(fp);
    fclose(fp1);
    return 0;
}
自信男孩 2017-07-28
  • 打赏
  • 举报
回复
程序看着没什么问题,注意下确保打开的文件没有问题,即判断返回的文件描述符,另外,注意下feof
jena_wy 2017-07-28
  • 打赏
  • 举报
回复
fp=fopen("employee.txt","r");只有这个文件存在才能成功,如果这个文件不存在就会报错。
战在春秋 2017-07-28
  • 打赏
  • 举报
回复
引用
就不行了
fp1=fopen("employee1.txt","w"); //打开方式为w,这种方式当文件再次打开时,会清除掉之前的内容,宜换成a+方式
具体文件打开方式的区别,可参考: http://no001.blog.51cto.com/1142339/526653
TopsLuo 2017-07-27
  • 打赏
  • 举报
回复
建议楼主先把结构中的数组长度加大,应该是越界引起的错误,表现在时好时坏
不懂啊不懂 2017-07-27
  • 打赏
  • 举报
回复
引用 楼主 yi19861209 的回复:
#include"stdio.h" #include"stdlib.h" typedef struct staff{ int number; //号码 char name[8]; //姓名 char sex[4]; //性别 int age; //年龄 char abode[20]; //住宅 int wage; //工资 char health[8]; //健康 char culture[8]; //文化 }ff; int main(){ FILE *fp,*fp1; ff jg[5]; int i=0; fp=fopen("employee.txt","r"); //判断下 if(!fp) { printf("判断下文件是否打开"); return 0; } fp1=fopen("employee1.txt","w"); while(!feof(fp)){ fscanf(fp,"%d %s %s %d %s %d %s %s\n",&jg[i].number,jg[i].name,jg[i].sex,&jg[i].age,jg[i].abode,&jg[i].wage,jg[i].health,jg[i].culture); fprintf(fp1,"%d %s %d\n",jg[i].number,jg[i].name,jg[i].wage); i++; } fclose(fp); fclose(fp1); return 0; } //本来是可以运行的我试了好几次都没有错,过了一下不知道怎么了就不行了。我都是用编辑器输入
报的什么错

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧