C/C++の宿題片付けます 135代目
■ このスレッドは過去ログ倉庫に格納されています
0433デフォルトの名無しさん
2010/05/01(土) 00:00:29#include<stdlib.h>
#include<string.h>
typedef struct tag_data_t{
char *org;
double height;
}data_t;
int data_cmp(const data_t *pa, const data_t *pb){
if(pa->height<pb->height) return -1;
return (pa->height>pb->height);
}
int main(void){
FILE *fp_in, *fp_out;
char onelinebuf[1024], *p;
data_t *data=NULL;
int i, data_num;
if((fp_in=fopen("sample.txt", "r"))==NULL) exit(1);
for(data_num=0;fgets(onelinebuf, sizeof(onelinebuf), fp_in);data_num++){
if((p=strchr(onelinebuf, '\n'))) *p='\0';
if((data=realloc(data, sizeof(*data)*(data_num+1)))==NULL) exit(2);
data[data_num].org=strdup(onelinebuf);
if(sscanf(onelinebuf, "%*d %*s %*f %lf", &data[data_num].height)!=1) exit(4);
}
fclose(fp_in);
qsort(data, data_num, sizeof(*data), (int (*)(const void*,const void*))data_cmp);
if((fp_out=fopen("ans.txt", "w"))==NULL) exit(3);
for(i=0;i<data_num;i++) fprintf(fp_out, "%s\n", data[i].org);
fclose(fp_out);
for(i=0;i<data_num;i++) free(data[i].org);
free(data);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています