解決なさったのは喜ばしい事ですが、できればどのように解決なさったのか示して戴ければ
後々(のちのち)別の方々への参考になると思います
遅くなってすみません。いろいろ忙しくて......
教えてくださった皆さんありがとうございました。
下記の方法で解決!!しました。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFLEN 300
int cmp(const void *c1, const void *c2);
void main(int argc, char *argv[])
{
FILE *fin, *fout; //ファイルポインタ
int i, lc; //ループカウンタ、ファイル数
char buf[BUFLEN], **line;
if (argc != 3) exit(1);
if ((fin = fopen(argv[1], r)) == NULL) { // 入力ファイルオープン
printf(入力ファイルがオープンできません\n);
exit(1);
}
for (lc = 0; fgets(buf, BUFLEN, fin); lc++);
// printf(lc = %d,lc);
rewind(fin);
if ((line = (char **)malloc(sizeof(char *) * lc)) == NULL) exit(1);
for (i = 0; i < lc; i++)
if ((line[i] = (char *)malloc(BUFLEN)) == NULL) exit(1);
for (i = 0; i < lc && fgets(line[i], BUFLEN, fin); i++);
fclose(fin);
qsort(line, lc, sizeof(char *), cmp);
if ((fout = fopen(argv[2], w)) == NULL) { // 出力ファイルオープン
printf(出力ファイルがオープンできません\n);
exit(1);
}
for (i = 0; i < lc; i++) fputs(line[i], fout);
fclose(fout);
for (i = 0; i < lc; i++) free(line[i]);
free(line);
return;
}
int cmp(void const *c1, void const *c2){
if (!strncmp(*(const char **)c1 + 96, 0000, 4)) return 1;
if (!strncmp(*(const char **)c2 + 96, 0000, 4)) return -1;
if (!strncmp(*(const char **)c1 + 96, , 4)) return 1;
if (!strncmp(*(const char **)c2 + 96, , 4)) return -1;
return strncmp(*(const char **)c1 + 96, *(const char **)c2 + 96, 4);
}
