data shuffle - beyondnlp/nlp GitHub Wiki

===================================

main.c

===================================

#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;
}

===================================

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]);
    }
    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;

}
⚠️ **GitHub.com Fallback** ⚠️