int ProcessOptions::WriteFile(const char *filename, POVMSObjectPtr obj) { struct INI_Parser_Table *table = parse_ini_table; OTextStream *ini_file; int err = kNoErr; if(!POV_ALLOW_FILE_WRITE(filename, POV_File_Text_INI)) return kCannotOpenFileErr; ini_file = OpenFileForWrite(filename, obj); if(ini_file == NULL) return kCannotOpenFileErr; err = WriteFile (ini_file, obj); delete ini_file; return err; }
void FileUtils::qsortfile(string m_fname1,char delimiter) { // TODO: Add your control notification handler code here char line[10240]; Ref* refseq=NULL; if(m_fname1 == "") { cout<<"please input a file for sort!"<<endl; return; } int ret; int total = CountLines(m_fname1); ret = OpenFileForRead(m_fname1); if(!ret) return; ret = OpenFileForWrite(m_fname1); if(!ret) return; ret = AllocBuffer(); if(!ret) return; ret = FirstRead(); if(!ret) { Release(); return; } refseq = new Ref[50000]; if(!refseq) { Release(); return; } cout<<"Begin to process:"<<endl; int k = 0; int count = 0; while(k < total) { ret = GetLine(line,10240); string buffer = line; count = GetFieldsNum(buffer,delimiter); for(int j=0;j<count;j++) { string field = GetField(buffer,j+1,delimiter); strcpy(refseq[k].field[j],field.c_str()); } cout<<"..."; k++; } qsort(refseq,k,sizeof(Ref),cmp); char line1[1024]; line1[0] = '\0'; //write the sorted resuts to file for(int j=0; j<k;j++) { strcpy(line1,""); for(int kk=0;kk<count-1;kk++) { strcat(line1,refseq[j].field[kk]); strcat(line1,"\t"); } strcat(line1,refseq[j].field[count-1]); WriteLine(line1); } LastWrite(); delete[] refseq; Release(); }