Удалить из текста слова короче четырех символов - 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];

Объяснение кода листинга программы

  1. В первой строке объявлена статическая переменная типа char с именем line и размером BUFSIZ, который обычно равен 1024.
  2. В данной переменной предполагается хранить текст, который необходимо обработать.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы