回 帖 发 新 帖 刷新版面

主题:新手请教一简单的C语言例题,望高手指点一下~谢谢!

在一个名字为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个回复)

沙发

至少输出是错的,代码不是自己写的吧
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"

板凳


{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 楼

[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 楼

闷~按上面的打也不行。。。

5 楼


zhangsan,568058934,13977232759,guangxi//zhangsan 下标越界
lishi,22098660,13977212345,beijing
wangwu,987654321,changsha//少address
qianliu,13977212345,123456789,hunan//13977212345 超出长整型范围

6 楼


[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了

我来回复

您尚未登录,请登录后再回复。点此登录或注册