大家帮忙看看哈
这个是随机访问磁盘文件排序的程序为什么在下面两个红色部分出现错误啊,错误内容为
D:\Code\C++\namespace\jimmy\main.c|8|error: expected ')' before '*' token|
D:\Code\C++\namespace\jimmy\main.c||In function 'Swap':|
D:\Code\C++\namespace\jimmy\main.c|19|warning: implicit declaration of function 'freed'|
D:\Code\C++\namespace\jimmy\main.c||In function 'sort':|
D:\Code\C++\namespace\jimmy\main.c|31|warning: implicit declaration of function 'Read'|
D:\Code\C++\namespace\jimmy\main.c|48|error: expected ')' before '*' token|
D:\Code\C++\namespace\jimmy\main.c|58|warning: second argument of 'main' should be 'char **'|
D:\Code\C++\namespace\jimmy\main.c|81|warning: unknown escape sequence '\N'|
D:\Code\C++\namespace\jimmy\main.c||In function 'main':|
D:\Code\C++\namespace\jimmy\main.c|84|warning: implicit declaration of function 'quicksort'|
D:\Code\C++\namespace\jimmy\main.c|85|warning: implicit declaration of function 'printfile'|
||=== 已完成构建: 2 个错误, 6 个警告 ===|
使用的是codeblock 大家帮忙看看啊
#include <stdio.h>
#include <stdlib.h>
struct inf
{
char name[20];
long codeNum;
};
long Read(File *fp,int index)
{
struct inf tmp;
fseek(fp,index*sizeof(struct inf),SEEK_SET);
freed(&tmp,sizeof(struct inf),1,fd);
return (tmp.codeNum);
}
void Swap(FILE *file,int index1,int index2)
{
struct inf index1struct,index2struct;
fseek(file,index1*sizeof(struct inf),SEEK_SET);
freed(&index1struct,sizeof(struct inf),1,file);
fseek(file,index2*sizeof(struct inf),SEEK_SET);
freed(&index2struct,sizeof(struct inf),1,file);
fseek(file,index2*sizeof(struct inf),SEEK_SET);
fwrite(&index1struct,sizeof(struct inf),1,file);
fseek(file,index1*sizeof(struct inf),SEEK_SET);
fwrite(&index2struct,sizeof(struct inf),1,file);
}
void sort(FILE *file,int left,int right)
{
int i=left;
int j=right;
long mid=Read(file,(left+right)/2);
do{
while((Read(file,i)<mid)&&(i<right)) i++;
while((Read(file,j)>mid)&&(j>left)) j--;
if(i<=j)
{
Swap(file,i,j);
}
}
while(i<=j);
if(i<right)sort(file,i,right);
if(j>left) sort(file,left,j);
}
void quicksore(FILE *file,int num)
{
sort(file,0,num-1);
}
void printfile(File * file)
{
struct inf tmp[5];
freed(tmp,5*sizeof(struct inf),1,fp);
for(int i=0;i<5;i++)
{
printf("%ld %s\n",tmp[i].name,tmp[i].codeNum);
}
}
int main(int argc,int **argv)
{
//创建原始数据
struct inf student[5]={
{"jimmy",1100201011},
{"panpan",1100201034},
{"jiji",1100201012},
{"dudu",1100201009},
{"yiyan",1100201006}
};
//创建文件,写入数据到文件
FILE *file;
if((file=fopen("data.txt","wb+"))==NULL)
{
printf("Open file failed!\n");
exit(EXIT_FAILURE);
}
fwrite(student,sizeof(student),1,file);
fclose(file);
//打开文件开始排序
if((file=fopen("data.txt","rb+"))==NULL)
{
printf("OPEN FILE FAILDED!\N");
exit(EXIT_FAILURE);
}
quicksort(file,5);
printfile(file);
fclose(file);
}
C语言
[解决办法]
D:\Code\C++\namespace\jimmy\main.c
[解决办法]
19
[解决办法]
warning: implicit declaration of function 'freed'
[解决办法]
freed(&index1struct,sizeof(struct inf),1,file);
fread吧?你看错误输出就可以知道错什么地方了三~
[解决办法]
太多拼写错误!!!
#include <stdio.h>
#include <stdlib.h>
struct inf
{
char name[20];
long codeNum;
};
long Read(FILE*fp,int index)
{
struct inf tmp;
fseek(fp,index*sizeof(struct inf),SEEK_SET);
fread(&tmp,sizeof(struct inf),1,fp);
return (tmp.codeNum);
}
void Swap(FILE *file,int index1,int index2)
{
struct inf index1struct,index2struct;
fseek(file,index1*sizeof(struct inf),SEEK_SET);
fread(&index1struct,sizeof(struct inf),1,file);
fseek(file,index2*sizeof(struct inf),SEEK_SET);
fread(&index2struct,sizeof(struct inf),1,file);
fseek(file,index2*sizeof(struct inf),SEEK_SET);
fwrite(&index1struct,sizeof(struct inf),1,file);
fseek(file,index1*sizeof(struct inf),SEEK_SET);
fwrite(&index2struct,sizeof(struct inf),1,file);
}
void sort(FILE *file,int left,int right)
{
int i=left;
int j=right;
long mid=Read(file,(left+right)/2);
do{
while((Read(file,i)<mid)&&(i<right)) i++;
while((Read(file,j)>mid)&&(j>left)) j--;
if(i<=j)
{
Swap(file,i,j);
}
}
while(i<=j);
if(i<right)sort(file,i,right);
if(j>left) sort(file,left,j);
}
void quicksort(FILE *file,int num)
{
sort(file,0,num-1);
}
void printfile(FILE * file)
{
struct inf tmp[5];
int i = 0;
fread(tmp,5*sizeof(struct inf),1,file);
for( i = 0;i<5;i++)
{
printf("%ld %s\n",tmp[i].name,tmp[i].codeNum);
}
}
int main(int argc,int **argv)
{
//创建原始数据
struct inf student[5]={
{"jimmy",1100201011},
{"panpan",1100201034},
{"jiji",1100201012},
{"dudu",1100201009},
{"yiyan",1100201006}
};
//创建文件,写入数据到文件
FILE *file;
if((file=fopen("data.txt","wb+"))==NULL)
{
printf("Open file failed!\n");
exit(EXIT_FAILURE);
}
fwrite(student,sizeof(student),1,file);
fclose(file);
//打开文件开始排序
if((file=fopen("data.txt","rb+"))==NULL)
{
printf("OPEN FILE FAILDED!\N");
exit(EXIT_FAILURE);
}
quicksort(file,5);
printfile(file);
fclose(file);
}