Почему передача массива char в качестве аргумента в функцию и попытка изменения внутри функции показывает ошибку сегментации? - PullRequest
1 голос
/ 15 апреля 2019

Я объявил массив переменных типа char как показано ниже:

char word[256];
char plural[256];

Он принимает входные данные внутри функции main и копирует их во множественное число, как показано ниже:

scanf("%s",&word);
strcpy(plural,word);

Введенный мною ввод "Baby".

Основной метод вызывает другую функцию множественного числа, передавая обе переменные в качестве аргументов, как показано ниже:

void pluralize(word,plural);

Вот что я хочу сделать с помощью метода множественного числа:

void pluralize(char word[], char plural[]){
    char textToBeAdded[] = "IES";   
    int i = strlen(plural);
    plural[i-1] = '\0';
    plural = strcat(plural, textToBeAdded);
    printf("Word is %s and plural is %s", word, plural);
    printf("\nRule is 1\n");
}

Я не использую char*, а использую char[], поэтому он должен быть изменяемым. Но это показывает ошибку во время выполнения сегментации. Почему и что я делаю не так?

1 Ответ

2 голосов
/ 15 апреля 2019

Одна проблема с этим утверждением:

scanf("%s",&word);

word - это массив char с. Итак, чтобы прочитать это, вам просто нужно:

scanf("%s",word);
...