#include <iostream> #include <vector> #include <algorithm> #include <string> #include <stdlib.h> #include <time.h> using namespace std; vector<string> lines; int main(int argc, char **argv) { if( argc < 2 ) { fprintf(stderr, "usage: %s infile outfile/n", argv[0]); exit(-1); } FILE *p_infile = fopen(argv[1],"r"); if (NULL == p_infile){ fprintf(stderr, "open file[%s] failed! ", argv[1]); return -1; } FILE *p_outfile = fopen(argv[2],"w"); if (NULL == p_outfile){ fprintf(stderr, "open file[%s] failed! ", argv[2]); return -1; } int cur_line_num = 0; int rand_line_num = 0; srand(time(0)); int max_id = 0; int temp_id = 0; char temp_buf[10000]; while (fgets(temp_buf, sizeof(temp_buf), p_infile)){ sscanf(temp_buf, "%d/t", &temp_id); if (temp_id > max_id){ max_id = temp_id; } lines.push_back(temp_buf); } random_shuffle(lines.begin(), lines.end()); vector<string>::iterator iter; int i = 0; for (iter = lines.begin(); iter != lines.end(); iter++){ fputs((*iter).c_str(), p_outfile); } fclose(p_infile); fclose(p_outfile); return 0; }