Строки (си)

Rinfes

New member
02.12.2012
1
0
#1
Разработать программу для решения указанной ниже задачи, состоящей из трех частей. Каждую часть оформить в виде отдельной подпрограммы.
Ввод и вывод осуществлять только в главной программе. Глобальные переменные не использовать. Память под строки распределять с помощью команд динамического распределения памяти. Обработку текста производить с помощью функций из стандартной библиотеки для работы со строками.

Дано: Текст, содержащий символьные строки(ввод осуществляется до тех пор, пока не будет введена пустая строка).

Требуется: Создать новый массив подстрок, выделив из каждой строки подстроки:
1. Заключенные в круглые скобки и содержащие символ ' * '
2. Среди выделенных подстрок найти подстроку: самую длинную (первую)
3. Преобразовать найденную подстроку: удалить все латинские буквы.

Вот моя не совсем рабочая программа, выполняющая пункт 1. Надеюсь на вашу помощь
Код:
#include <ctype.h>

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <alloc.h>

void pods(char *s[20], int n, char *ps[30], int *k)
{int i,l;
char *np1,*np2;
for(i=0; i<n; i++)
{np1=s[i];
while (*np1)
{while ((*np1!='(') && *np1!='\0') np1++;
np2=np1;
while (*np2!='\0' && *np2!=')' && *np2=='*') np2++;
if (*np2=='\0'|| *np2!='*')
{np1=np2;
continue;
}

l=np2-np1-1;
if (l!=0)
{ps[*k]=(char*)malloc(l+1);
strncpy(ps[*k], np1+1, l);
ps[*k][l]='\0';
(*k)++;
}
np1=np2;
}
}
}



void main ()
{char *s[20],*ps[30], **u, buf[80],*h;
int n=0, k=0;
clrscr ();

printf(" \n s: ");
while (n<20 && *gets(buf))
{s[n]=(char*)malloc(strlen(buf)+1);
strcpy(s[n],buf);
n++;
}

printf(" \n stroki:\n");
pods(s,n,ps,&k);
for (u=ps; u<ps+k; u++)
puts(*u);

}


}