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

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;
}
//本来是可以运行的我试了好几次都没有错,过了一下不知道怎么了就不行了。我都是用编辑器输入
...全文
177 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; } //本来是可以运行的我试了好几次都没有错,过了一下不知道怎么了就不行了。我都是用编辑器输入
报的什么错
编译别人的GHO文件 里面有说明 软件准备   1 UltraISO   2 GHOST镜像浏览器V8.3.EXE(在光盘里可以提取到)   3 EasyBoot   4 ghostxp  ISO文件  详细步骤: 1.用UltraISO打开电脑公司ghost xp v7.3 ISO文件提取一个文件包,一个GHO文件 (EZBOOT文件包,WINXPSP2.GHO文件) EZBOOT文件包是光盘DOS启动界面和WINDOWS系统中自动运行截面 2.修改光盘DOS启动截面: 准备一张640*480 256色图片,图片可以选择自己喜欢的图片,用PS修改成640*480 256色 首先将准备好的图片放到提取出的EZBOOT文件夹中,替换原来的BACK.BMP;用EASYBOOT打开EZBOOT文件夹中的cdmenu.ezb文件,因为已经替换了背景文件BACK.BMP文件,所以在EASYBOOT显示的已经是你喜欢的背景图片了,各位可以按照自己的喜好随便用EASYBOOT软件修改里边的文字部分,比如作者,日期,菜单可以不用修改,因为DONGHAI已经做的很好了,对了在保存以前别忘记在EASYBOOT里选中背景图象一项。 SUB.EZB文件和上边一样的修改方法 容易出现的问题就是图片的格式问题,一定要把图片个修改对了 完成以后替换原来的EZBOOT就OK了 3 修改WINDOWS系统下光盘自动运行的界面 在UltraISO打开的7.3ISO文件里提取AUTORUN.INI,把里边修改成自己的OEM信息,替换原来的文件 有人要问了,干吗要改,(哈哈,这个AUTORUN.INN文件就是WINDOWS系统下光盘自动运行的界面显示的文字内容) 光盘界面问题到次修改完毕. 4 接下来就是修改GHO文件了,要用到的软件就是GHOST镜像浏览器V8.3.EXE 用GHOST镜像浏览器V8.3.EXE打开已经提取出来的WINXPSP2.GHO文件,大家可以看到,里边的文件树 其实就是装完系统后的C盘的样子. 里边需要修改的地方很多.但是大体的不删除原来软件的 情况下就需要修改以下几个地方(因为原来残留的流氓软件ISLAND已经处理完毕了 不过本人 个人认为.里边的QQ2006,迅雷,SAFE360,傲游浏览器,BIT下载软件都可以不要了;具体原因大家在使 用当中可以体会到这几个软件带来得不方便,我就不多说了) 软件的删除方法很简单就是在打开的GHO文件文件树中找到Document and Settings-Administrator--桌面,将里边的QQ和迅雷的连接文件删除,再到all users--桌面里的bitcomet.lnk,maxthon.lnk删除,再到all users--开始菜单--程序中将腾讯QQ包删除; 这一步是为了把开始菜单和桌面上的不要的软件的连接删除,下面就给把实质的程序删除了,可以在program files找到,一一删除就行了,这样在将来的桌面上就干净了 5 下面就是最烦琐重要的部分,这儿充分体现了东海大哥的智慧 第一步:修改系统属性里的OEM信息:首先找到sysprep文件夹提取sysprep.inf文件,如下 ProductKey=MRX3F-47B9T-2487J-KWKMF-RPWBY FullName="GHOST 还原盘基地" OrgName="www.wzlu.com" ComputerName=* 将微软用户和微软中国改成你自己的公司名,然后保存替换原来的文件 第二步就是修改系统属性里制造商和技术支持商的标志和技术支持信息: 支持商的标志是windows-system32中的oemlogo,大家可以设计个差不多大小的替换掉原来的就可以了 技术支持信息是windows-system32下的oeminfo.ini文件,可以打开修改后替换本来的 第三就是修改系统恢复过程中有一段时间显示的图片,位置是windows-system32中的setup.bmp文件,可以用上边的back.bmp改为setup.bmp替换 到这儿大部分的已经修改完毕,还有就是在系统装完后在标准模式下开始菜单上有个连接的问题,这个就比较麻烦了,需要修改注册表,GHO文件的注册表位置是windows-system32下的config下的文件,这个只需要将config下的software提取出 来就行了,修改办法如下:开始-运行-regedit,打开注册表编辑器选中 HKEY_LOCAL_MACHINE,选中 文件--加载配置单元,选择刚才提取的sofeware文件,随便在弹出的加载配置单元的项名称随便起个名字,比如123,这时候在HKEY_LOCAL_MACHINE下就会多了123 的项;下边找到了根源 HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0},这一项里包含了“默认”和“Infotip”这两项,将Infotip直接删除,在左边{2559a1f6-21d7-11d4-bdaf- 00c04f60b9f0}下还有Instance项,里边有"默认","CLSID","COMMAND","METHOD","PARAM1"几项, 下边把"command","param1"直接删除就行了。 最后回到123项目跟目录,文件-卸载配置单元,把修改好的sofeware文件替换原来的 5 回到GHOST镜像浏览器V8.3.EXE 文件--编译,将编译好的WINXPSP2.GHO替换ISO中的原文件。 6 封光盘 最后就是在UltraISO中保存已经修改好的的ISO文件,记得在UltraISO左边栏把原来的“电脑公司GHOSTXP V7.3”修改成你要做的光盘的名字

69,371

社区成员

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

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