короче есть текст, есть массив разделителей, считываем текст, пока не найдем строку, в которой кол-во одниковых слов больше N, потом найти слова, которые оканчиваются подстрокой А, заменить их на заданное слово С, если меняли все меньше T раз - встасить строку B перед строкой текста. Массив разделителей - строка символов-разделителей, введенных без пробелов, пробел - разделитель, если указан в этом массиве.
начал писать, пытаюсь реализовать ввод и проверку окончания ввода, но где-то упираюсь в незарезервированую память, вобщем вот код
| Код | #include <stdio.h> #include <stdlib.h> #include <string.h>
int main() { char *space,*substr,*zamstr,*forwardstr,tmp[256],**text,**words; int nword,nswap,i; //razddeliteli gets(tmp); space=(char*)malloc((strlen(tmp)+1)*sizeof(char)); strcpy(space,tmp);
//kol-vo slov v stroke scanf("%d",&nword);
//substr gets(tmp); substr=(char*)malloc((strlen(tmp)+1)*sizeof(char)); strcpy(substr,tmp);
//slovo-zamena gets(tmp); zamstr=(char*)malloc((strlen(tmp)+1)*sizeof(char)); strcpy(zamstr,tmp);
//kol-vo zamen scanf("%d",&nswap);
//stroka kotory pihaem pered etim vsem gets(tmp); forwardstr=(char*)malloc((strlen(tmp)+1)*sizeof(char)); strcpy(forwardstr,tmp);
//vvod teksta text=(char**)malloc(sizeof(char*)); words=(char**)malloc(sizeof(char*)); int eoi=0,numword=0; for (i=0;!eoi;i++) { //vvod i-oi str gets(tmp); text[i]=(char*)malloc((strlen(tmp)+1)*sizeof(char)); strcpy(text[i],tmp);
//proverka okonchania vvoda int k,j,count,lenword; char *b,*e,*word; while (*b != '\0') {
while ( strchr(space, *b) && *b != '\0' ) { ++b; }
e=b;
while ( !strchr(space, *e) && *e != '\0') { ++e; }
words=(char**)realloc(words,(numword+1)*sizeof(char*)); word=(char*)malloc((e-b)*sizeof(char)); numword++;lenword=e-b;
for (;b<=e;b++) { strcat(word,b); }
words[numword-1]=(char*)malloc((lenword+1)*sizeof(char)); strcat(words[numword-1],word); }
for (k=0;k<numword;k++) { for (j=k;j<=numword;j++) { if (strcmp(words[k],words[j])==0) count++; } } if (count>nword) eoi=1; } }
|
помогите найти ошибку, еще лучше была бы помощь в написании все программы, я немного не догоняю, как сделать замену слов |