Удалить из текста слова короче четырех символов - C (СИ)
Формулировка задачи:
Выполняю задание - удалить из текста слова короче 4-х символов, а слова длиннее 7-ми заменить на введенное слово. И у меня вылазит access violation. Подскажите что не так.
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string.h> #include <malloc.h> #define MAXLINE 86 #define MAXSTR 15 char* getline() { int i=0; char line[MAXLINE]; while ((line[i]=getchar())!='\n') { i++; } line[i]='\0'; return &line[0]; } int main(void) { int i=0,lg[16],j=0,i2=0; char txt[MAXSTR][MAXLINE],sep[6],s[MAXSTR][MAXLINE]; char *word; char slovo[MAXLINE]; puts("Enter array of separators: \n"); scanf("%s",sep); puts("Enter text: \n"); while(i<MAXSTR) { scanf("%s",txt[i]); i2=0; j=strlen(txt[i]); while(j>0) { s[i][i2]=txt[i][j-1]; i2=i2+1; j=j-1; } s[i][i2]='\0'; if (strlen(txt[i])==strlen(txt[i-1])) { if (strcmp(strtok(s[i],sep),strtok(s[i-1],sep))==0) {break;} } i=i+1; }; for (i=0;i<MAXSTR;i++) { j=0; word=(char*)malloc(MAXLINE*MAXLINE*sizeof(char));//выделяю память memset(word,0,sizeof(word));//очищаю буффер word=strtok(txt[i],sep);//разбиваю на слова do { j=j+1; *(word+j)=*strtok('\0',sep); } while(word[j]); memset(txt[i],0,sizeof(txt[i]));//очищаю строку в тексте, что-бы записать туда изменённый текст for(j=0;j<MAXLINE;j++)//записываю изменённый текст { if (strlen(word+j)>7)//замена на введённое слово { *txt[i]=*slovo; } if (strlen(word+j)>=4)//игнорирование слов короче 4 символо { strcat(txt[i],(word+j)); } } } free(word); getch(); return 0; }
Решение задачи: «Удалить из текста слова короче четырех символов»
textual
Листинг программы
static char line[BUFSIZ];
Объяснение кода листинга программы
- В первой строке объявлена статическая переменная типа char с именем
line
и размером BUFSIZ, который обычно равен 1024. - В данной переменной предполагается хранить текст, который необходимо обработать.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д