C/C++の宿題を片付けます 97代目
■ このスレッドは過去ログ倉庫に格納されています
0652デフォルトの名無しさん
2007/10/31(水) 17:31:51#include <stdlib.h>
#include <stdio.h>
int scomp(const void *a, const void *b) {
return strcmp(*(char *const *)a, *(char *const *)b);
}
int main(int argc, char **argv) {
int i, buffsize = 1024, datamaxsize = 1, datasize = 0;
char **data = (char **)malloc(datamaxsize * sizeof(char *));
char buff[buffsize], *p, *delim = "\r\n\t ", *saveptr, *last = "";
FILE *in = 0 < argc ? fopen(argv[1], "r") : 0;
if (in) while (fgets(buff, buffsize, in) != NULL) {
for (p = strtok_r(buff, delim, &saveptr); p; p = strtok_r(0, delim, &saveptr)) {
if (datamaxsize <= datasize) {
datamaxsize *= 2;
data = realloc(data, datamaxsize * sizeof(char *));
}
data[datasize++] = strdup(p);
}
}
fclose(in);
qsort(data, datasize, sizeof(char *), scomp);
for (i = 0; i < datasize; i++) {
if (strcmp(last, data[i]) != 0) puts(data[i]);
last = data[i];
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています