timlsscott
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть программа которая переписывает ASCII коды из одного файла в другой. Нужно переделать ее так, чтобы она копировала текст из первого файла и сортировала слова по алфавиту в другой файл. Вот само задание. Реализуйте класс, содержащий следующие методы работы с текстовым файлом: 1. Все поля класса должны иметь тип доступа private. 2. Если метод вызывается извне, то его тип public, иначе – private. 3. Интерфейс класса разместите в заголовочном файле, а реализацию класса и главную функцию – в двух отдельных файлах. 1) Открыть файл с расширением .txt 2) Создать новый файл с тем же именем и расширением .dat 3) Записать в новый файл слова из старого файла в алфавитном порядке. 4) Закрыть оба файла. Вот программа, которая есть: #include "my_class.h" my_class::my_class(void) { } int my_class::open_txt_file(char* filename){ my_class::file_name= (char*)malloc(sizeof(filename)); strcpy(my_class::file_name,filename); strcat(filename,".txt"); if((my_class::in = fopen(filename,"r"))==0){ printf("Can't open file: %s!",filename); } return 0; } int my_class::create_dat_file(){ strcat(my_class::file_name,".dat"); if((my_class::out = fopen(my_class::file_name,"w"))==0){ printf("Can't open file: %s!",my_class::file_name); } return 0; } bool num_1(char s[8]){ int n=0; for(int i=0; i<8;i++){ if(s[i]=='1')n++; } if(n>=3) return true; else return false; } int my_class::do_ASCII(){ FILE* f= my_class::in; FILE* f1= my_class::out; char* b= my_class::buf; fseek(f,0,SEEK_END); my_class::n= ftell(f); fseek(f,0,0); b= (char*)malloc(n); fread(b,n,1,f); char temp[8]={0}; for(int i=0;i<n;i++){ if(b[i]>0){ itoa((int)b[i],temp,2); if(num_1(temp)) fwrite(&b[i],1,1,f1); } } return 0; } int my_class::close_all(){ fclose(my_class::in); fclose(my_class::out); return 0; } #include "my_class.h" int main(){ char s1[255]; my_class s; printf("Type file name: "); scanf("%s",s1); s.open_txt_file(s1); s.create_dat_file(); s.do_ASCII(); s.close_all(); return 0; |