@lrusifikator
Pam parapam

Как исправить ошибку сегментирования?

Я видимо что то не понимаю. Программа должна просто разбить строку на слова и записать в список указателей list. Где тут проблема, не подскажете?
Любой символ не из латиницы пропускается.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define ROWS 100

int main(){
	char *str="Hello  !world          !\n";
	char **list = (char **) calloc(ROWS, sizeof(char));
	char *word = NULL;
	int y;
	for(int i=0, j=0;i<strlen(str);i++){
		y=0;
		while(isalpha((char) str[i])){
			word = (char *) realloc(word, sizeof(word) + 1);
			word[y++]=str[i++];
		}
		word[y]='\0';
		if(y!=0){
			list[j] = (char *) calloc(sizeof(word), sizeof(char)); 
			strcpy(list[j++], word);
			list[j]=NULL;
		}
	}
	
	for(int i=0; list[i]!=NULL;i++)
		printf("%s ", list[i]);
	printf("\n");
	return 0;
}

Ошибка : "Ошибка сегментирования (сделан дамп памяти)"
//
//
//
Спасибо, кто помогал.
  • Вопрос задан
  • 361 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы