c语言fseek函数变量问题

fseek(fp,20L,0)的中间那部分一定要是具体数值吗?比如说我用fseek(fp,kL,0)为什么不行??这个程序。voidadd(structstudentst... fseek(fp,20L,0)的中间那部分一定要是具体数值吗?比如说我用fseek(fp,kL,0)为什么不行??这个程序。
void add(struct student stu[]){
char i[10];
FILE *fp;
int k;
printf("Which sequence do you want to add information after it?");
scanf("%s",i);
if((strlen(i)>2)||((strlen(i)==2)&&(((i[0]-48)*10+(i[1]-48)>=60)||((i[0]-48)+(i[1]-48)==0)))||((strlen(i)==1)&&((i[0]-48)==0))){
printf("enter error");}
else{
if(strlen(i)==2){
k=((i[0]-48)*10+(i[1]-48));}
else{
k=(i[0]-48);}
if((fp=fopen("C:\\student.dat","ab"))==NULL){
printf("cannot open file\n");
return;
}
fseek(fp,(19*k)L,0);
printf("Enter student number\n");
scanf("%d",&stu[k-1].num);
getchar();
printf("Enter student name\n");
scanf("%s",stu[k-1].name);
printf("Enter student age\n");
scanf("%d",&stu[k-1].age);
getchar();
printf("Enter student sex\n");
scanf("%s",stu[k-1].sex);
if(fwrite(&stu[k-1],sizeof(struct student),1,fp)!=1){
printf("file write error\n");}
else{
printf("save succesfully\n");
}
if(fclose(fp)){
printf("close error A\n");
exit(0);
}
}
}
展开
 我来答
小贼快快受死
2013-05-29 · TA获得超过281个赞
知道答主
回答量:59
采纳率:0%
帮助的人:27.6万
展开全部
函数参数传递可以是变量吗?c语言参数的传递都是值传递的和指针传递,所以fseek函数里的第二个值是传递的值。第一个是传递的指针吗,最后个是传递的指针当前所在的文件内部位置。想要在第k个位置上插入一个student结构,把k用#define声明为常数。函数不能传递变量
更多追问追答
追问
可是我想要的效果是随着K输入的不同,而到文件的不同位置,那要怎么写?
追答
那就改成1L*sizeof(k*stu)就有k个stu的结构体,根据malloc函数可以在sizeof中有变量的参数,我觉得这点也应该可以吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式