?? c.txt
字號:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct Data
{
char strName[20];
char strStudentNo[10];
int iClassNo;
int iMark;
struct Data *priorData;
struct Data *nextData;
}DATA;
void main()
{
FILE *fin,*fout;
DATA *HeadData=(DATA *)malloc(sizeof(DATA));
DATA *dTemp1=NULL,*dTemp2=NULL;
int i,j;char c;
int iRecordCount=0;
char infilename[50];
char outfilename[50]="C:\\grade_result.dat";
printf("Please input filename:\n");
gets(infilename);
if ((fin=fopen(infilename,"r"))==NULL)
{
printf("---Cannot open this file!---\n");
exit(0);
}
if ((fout=fopen(outfilename,"w"))==NULL)
{
printf("---Cannot open this file!---\n");
exit(0);
}
HeadData->nextData=NULL;
c=fgetc(fin);
while(!feof(fin))
{
iRecordCount++;
DATA *data=(DATA *)malloc(sizeof(DATA));
while(c!='\n'&&c!=EOF)
{
j=0;
while(c!=',')
{
data->strName[j]=c;
c=fgetc(fin);
j++;
}
data->strName[j]='\0';
j=0;
c=fgetc(fin);
while(c!=',')
{
data->strStudentNo[j]=c;
c=fgetc(fin);
j++;
}
data->strStudentNo[j]='\0';
fscanf(fin,"%d",&data->iClassNo);
c=fgetc(fin);
fscanf(fin,"%d",&data->iMark);
c=fgetc(fin);
}
c=fgetc(fin);
if (HeadData->nextData==NULL)
{
HeadData->nextData=data;
data->priorData=HeadData;
}
else
{
if (dTemp1!=NULL)
{
dTemp1->nextData=data;
data->priorData=dTemp1;
}
}
dTemp1=data;
}
dTemp1->nextData=NULL;
for(i=0;i<iRecordCount;i++)
{
dTemp1=HeadData->nextData;
while(dTemp1->nextData!=NULL)
{
if(dTemp1->iClassNo>dTemp1->nextData->iClassNo)
{
dTemp2=dTemp1;
dTemp2->priorData->nextData=dTemp2->nextData;
dTemp2->nextData->priorData=dTemp2->priorData;
dTemp2->priorData=dTemp2->nextData;
dTemp2->nextData=dTemp2->nextData->nextData;
if(dTemp2->nextData!=NULL)
{
dTemp2->nextData->priorData=dTemp2;
}
dTemp2->priorData->nextData=dTemp2;
}
else
{
dTemp1=dTemp1->nextData;
}
}
}
for(i=0;i<iRecordCount;i++)
{
dTemp1=HeadData->nextData;
while(dTemp1->iClassNo==dTemp1->nextData->iClassNo)
{
if(dTemp1->iMark<dTemp1->nextData->iMark)
{
dTemp2=dTemp1;
dTemp2->priorData->nextData=dTemp2->nextData;
dTemp2->nextData->priorData=dTemp2->priorData;
dTemp2->priorData=dTemp2->nextData;
dTemp2->nextData=dTemp2->nextData->nextData;
if(dTemp2->nextData!=NULL)
{
dTemp2->nextData->priorData=dTemp2;
}
dTemp2->priorData->nextData=dTemp2;
}
else
{
dTemp1=dTemp1->nextData;
}
}
}
for(i=0;i<iRecordCount;i++)
{
dTemp1=HeadData->nextData;
while (dTemp1->iClassNo==dTemp1->nextData->iClassNo)
{
dTemp1=dTemp1->nextData;
}
dTemp1=dTemp1->nextData;
while(dTemp1->nextData!=NULL)
{
if(dTemp1->iMark<dTemp1->nextData->iMark)
{
dTemp2=dTemp1;
dTemp2->priorData->nextData=dTemp2->nextData;
dTemp2->nextData->priorData=dTemp2->priorData;
dTemp2->priorData=dTemp2->nextData;
dTemp2->nextData=dTemp2->nextData->nextData;
if(dTemp2->nextData!=NULL)
{
dTemp2->nextData->priorData=dTemp2;
}
dTemp2->priorData->nextData=dTemp2;
}
else
{
dTemp1=dTemp1->nextData;
}
}
}
for(dTemp1=HeadData->nextData;dTemp1!=NULL;dTemp1=dTemp1->nextData)
{
fprintf(fout,"%s,%s,%d,%d\n",dTemp1->strName,dTemp1->strStudentNo,dTemp1->iClassNo,dTemp1->iMark);
}
fclose(fin);
fclose(fout);
dTemp1=HeadData->nextData;
while(dTemp1->nextData!=NULL)
{
HeadData->nextData=dTemp1->nextData;
free(dTemp1);
dTemp1=HeadData->nextData;
}
free(HeadData);
HeadData=NULL;
dTemp1=NULL;
dTemp2=NULL;
printf("---Order the Grades Completed,Results in %s !---\n",outfilename);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -