主题:新手请教一简单的C语言例题,望高手指点一下~谢谢!
LX220111
[专家分:0] 发布于 2010-06-21 19:59:00
在一个名字为LX.txt的TXT文档里面有4个数据,例如:
zhangsan,568058934,13977232759,guangxi
lishi,22098660,13977212345,beijing
wangwu,987654321,changsha
qianliu,13977212345,123456789,hunan
输出这些数据到计算机,以下程序什么地方错,应该怎么改?望高手指点一下,希望能把改掉的代码写出来,我是新手,刚学不久,直接说方法或者函数我可能听不懂,谢谢~
[b]#include<stdlib.h>
#include<stdio.h>
struct student_type
{
char name[8];
unsigned long qq;
char tel[11];
char addr[8];
}stud[4];
void main()
{int i;
FILE*fp;
if((fp=fopen("LX.txt","r"))==NULL)
{printf("can not open file\n");
exit(0);}
for(i=0;i<4;i+=1)
{fseek(fp,i*sizeof(struct student_type),0);
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s%d%d%C\n",stud[i].name,stud[i].qq,stud[i].tel,stud[i].addr);
}
fclose(fp);
}[/b]
回复列表 (共6个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-06-21 20:31:00
至少输出是错的,代码不是自己写的吧
printf("%s%d%d%C\n",stud[i].name,stud[i].qq,stud[i].tel,stud[i].addr);
这里"%s%d%d%C\n",里错了俩地方,应该是"%s %d %s %s\n"
板凳
LX220111 [专家分:0] 发布于 2010-06-21 21:18:00
{fseek(fp,i*sizeof(struct student_type),0);
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s%d%d%C\n",stud[i].name,stud[i].qq,stud[i].tel,stud[i].addr);
}
我知道这段肯定是错了,问题在于怎么改,改怎么什么样的,应该怎么写。。。
本来这是一题例题,但是题目被改了一下,我刚开始学C语言,一改我就不知道应该怎么写了~
3 楼
crazyboylcy [专家分:50] 发布于 2010-06-21 23:32:00
[b]#include<stdlib.h>
#include<stdio.h>
struct student_type
{
char name[8];
unsigned long qq;
char tel[11];
char addr[8];
}stud[4];
void main()
{int i;
FILE*fp;
if((fp=fopen("LX.txt","r"))==NULL)
{printf("can not open file\n");
exit(0);}
for(i=0;i<4;i+=1)
{fseek(fp,i*sizeof(struct student_type),0);
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s %d %s %s\n",stud[i].name,stud[i].qq,stud[i].tel,stud[i].addr);
}
fclose(fp);
}[/b]
4 楼
LX220111 [专家分:0] 发布于 2010-06-23 22:17:00
闷~按上面的打也不行。。。
5 楼
alweeq86 [专家分:1170] 发布于 2010-06-24 08:59:00
zhangsan,568058934,13977232759,guangxi//zhangsan 下标越界
lishi,22098660,13977212345,beijing
wangwu,987654321,changsha//少address
qianliu,13977212345,123456789,hunan//13977212345 超出长整型范围
6 楼
alweeq86 [专家分:1170] 发布于 2010-06-24 09:34:00
[code=c]
#include<stdio.h>
#include <stdlib.h>
struct student_type
{
char name[16];
unsigned long qq;
char tel[16];
char addr[16];
};
struct student_type stud[4]={"zhangsan",568058934,"13977232759","guangxi",
"lishi",22098660,"13977212345","beijing",
"wangwu",987654321,"","changsha",
"qianliu",1397721234,"123456789","hunan"};
void main()
{int i;
FILE*fp;
if((fp=fopen("LXX.txt","w"))==NULL)
{printf("can not open file\n");
exit(0);}
fwrite(&stud,sizeof(stud),4,fp);
fclose(fp);
for (i=0;i<=4;i++)//把stud清空
{
stud[i].name[0]='\0';
stud[i].qq=0;
stud[i].tel[0]='\0';
stud[i].addr[0]='\0';
}
if((fp=fopen("LXX.txt","r"))==NULL)
{printf("can not open file\n");
exit(0);}
for(i=0;i<4;i+=1)
{fseek(fp,i*sizeof(struct student_type),0);
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s %d %s %s\n",stud[i].name,stud[i].qq,stud[i].tel,stud[i].addr);
}
fclose(fp);
}
[/code]
用你原来的文件就是得不出正确结果
我把他先写入再读就OK了
我来回复