데이터 섞기 - shuffle
===================================
main.c
===================================
#include
#include
#include
#include
#include
#include "keyword.c"
int ncomp = 0;
#define MAXCOMPARE 5
int mystrcmp(const void *a, const void *b)
{
ncomp++;
return strcmp(* (char **) a, * (char **) b);
}
void shuffle(char **keyword, int size)
{
int i;
int k1;
int k2;
char *x;
for(i = 1; i < size*10; i++)
{
k1 = rand() % size;
k2 = rand() % size;
x = keyword[k1];
keyword[k1] = keyword[k2];
keyword[k2] = x;
}
}
int main()
{
char **keyword;
int i;
int count;
keyword = keyword2;
count = sizeof(keyword2)/sizeof(4);
shuffle(keyword, count);
for(i = 0; i < count; i++)
{
printf("%s\n", keyword[i]);
}
printf("\n");
return 0;
}
===================================
keyword.c
===================================
char *keyword2[]={
"가학",
"가합",
"가항",
};
###############################################################################################
파일 입력 버전
###############################################################################################
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void shuffle( char **keyword, int size )
{
int i;
int k1;
int k2;
char *x;
for( i = 0; i < size*10; i++ )
{
k1 = rand()%size;
k2 = rand()%size;
x = keyword[k1];
keyword[k1] = keyword[k2];
keyword[k2] = x;
}
}
void print_result( char *fn, char **keyword, int index )
{
int i;
FILE *fw;
fw = fopen( fn, "w" );
for( i = 0; i < index; i++ )
fprintf( fw, "%s\n", keyword[i]);
fclose(fw);
}
int get_line( FILE *fp )
{
int ret;
int line=0;
while( (ret =fgetc( fp )) != EOF )
{
if( ret == '\n' ) line++;
}
return line;
}
int main( int argc, char *argv[])
{
FILE *fp;
int i, line , index = 0;
char **keyword, *p;
char buffer[1024];
if( argc != 3 )
{
printf("%s <in filename> <out filename>\n", argv[0] );
return 0;
}
if(( fp = fopen( argv[1], "r")) == NULL )
{
fprintf( stderr,"cannot open file = %s\n", argv[1]);