|
|
|
|
|
для: alex19921992
(02.01.2008 в 10:02)
| | 1)c4ca4238a0b923820dcc509a6f75849b
2)c81e728d9d4c2f636f067f89cc14862c
3)eccbc87e4b5ce2fe28308fd9f2a7baf3
4)a87ff679a2f3e71d9181a67b7542122c
5)e4da3b7fbbce2345d7772b0674a318d5
6)1679091c5a880faf6fb5e6087eb1b2dc
7)8f14e45fceea167a5a36dedd4bea2543
Это так файл выглядит
а теперь я должен все строки засунуть в массив! | |
|
|
|
|
|
|
|
для: zzDimazz
(02.01.2008 в 06:46)
| | немного не понимаю, зачем тебе 2мерный массив?
и какие тут строкИ, когда тут одна строка? | |
|
|
|
|
|
|
| Вот имеется файл с текстом :
А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();
}
|
Я пользуюсь Turbo C++ v 3.1!
заранее спасибо[ | |
|
|
|
|