data shuffle - beyondnlp/nlp GitHub Wiki
===================================
===================================
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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;
}
===================================
===================================
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]);
}
line = get_line( fp );
fseek( fp, 0, SEEK_SET );
keyword = malloc(sizeof(char*)*line );
while( fgets( buffer, 1024, fp ) != NULL )
{
if(( p = strchr( buffer, '\n' )) != NULL ) *p = '\0';
keyword[index++] = strdup( buffer );
}
shuffle( keyword, index );
print_result( argv[2], keyword, index );
for( i = 0; i < index; i++ )
free( keyword[i] );
free(keyword);
fclose(fp);
return 0;
}