Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: zzDimazz (02.01.2008 в 06:46) Вот имеется файл с текстом : А5S1R2G8FMMD4E32 программа его преобразует в : ASSSSSRGGFFFFFFFFMMDEE22 короче смысл в том что символ перед которым нет цифри пишеться как есть а тот перед которым цифра n(0..9) повторяется n раз! вот я и сделал это теоритически но плин практически трабл какой то я считал кол-во строк и символов в строке и выделял под каждый символ память а обратиться скажем к символу немогу типа str[ j ][ j ] немогу, думаю проблема именно в этом PS дайте пожалуйста линки и еще какие нибудь информаионные сведения про строки в Си есть у кого РУССКИЙ ХЕЛП для Turbo C++ v 3.1 был бы признателен! код :
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <string.h> //Функция определения числа от 0-9 int isnum(char **s,int i,int j,int ln) { if ( (*(*s+j*ln+i)=='0')|(*(*s+j*ln+i)=='1')|(*(*s+j*ln+i)=='2')|(*(*s+j*ln+i)=='3')|(*(*s+j*ln+i)=='4') |(*(*s+j*ln+i)=='5')|(*(*s+j*ln+i)=='6')|(*(*s+j*ln+i)=='7')|(*(*s+j*ln+i)=='8')|(*(*s+j*ln+i)=='9') ) return 1; else return 0; } //////////////////////////////////////////// void main() { char *buffer[255]; char *s,ch; int *a,i=0,j=0,m,n=0,cs=0,k,ln; FILE *f; clrscr(); f=fopen("C:\\files_l6\\l6.txt","rt"); if (f==NULL) { perror("\t ERROR:/n/tFile not exist!"); exit(1); } else printf("\nOpened sucesfully!!!\n\n"); //scan the file! while(!feof(f)) { n++; //count of symbols if(fgetc(f)=='\n') i++; //calculating the lines } printf("Symbols = %d\n",n); ln=i; i=0; printf("strok = %d (0 - %d)\n",ln+1,ln); s = (char*)malloc(ln*sizeof(char)); //making memory (lines - ln ) a = (int*)malloc(ln*sizeof(int)); //massiv of line length fseek(f,SEEK_SET,0);//putting cursor in the begining of the file while(!feof(f)) { cs++; // count of symbols in 1 line ch=fgetc(f); if (ch=='\n') { s[i] = (char*)malloc(i*(cs)*sizeof(char)); i++; a[i] = cs;// printf("| end of line %d symbols = %d+1(\\n) \n",i,a[i]); cs=0; } putch(ch); } i=0; printf("| end of file on line %d symbols = %d +1(EOF)\n",ln+1,cs-1); fseek(f,SEEK_SET,0);//putting cursor in the begining of the file // grabb the liness into strings[i] while(!feof(f)) { fgets(&s[i],a[i],f); printf("%s",&s[i]); i++; } //for(i=0;i<ln;i++) printf("//%d \n",isnum(&s,0,0,ln)); //printf("!%s!\n",&s[1][1]); ////////////////////////////////////////////////////// /////////// MAIN PART /////////////////// ////////////////////////////////////////////////////// for(j=0;j<ln;j++) { i=0;m=0; while(i<a[ln]) { if( isnum(&s,j,i,ln) ) { for(k=0;k< int(*(s+j*ln+i));k++) { *buffer[m]=*(s+j*ln+i+1); m++; } i+=2; } else { *buffer[m]=*(s+j*ln+i); m++; i++; } } // buffer[m]='\0'; printf("%s\n",&buffer); } ////////////////////////////////////////////////////// /////////// ENDS PART /////////////////// ////////////////////////////////////////////////////// fclose(f); for(i=0;i<ln;i++) free(&s[i]); free(s); getch(); }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: