首页 > 解决方案 > 为什么在函数中将 char 数组作为参数传递并尝试在函数内部进行修改会显示分段错误?

问题描述

我已经声明了一个 char 变量数组,如下所示:

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

它在main函数内部接受输入并复制到复数变量,如下所示:

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

我提供的输入是“宝贝”。

main 方法通过将两个变量作为参数传递来调用另一个函数,如下所示:

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");
}

我没有 usingchar*和 using char[],所以它应该是可修改的。但它显示了分段运行时错误。为什么以及我做错了什么?

标签: carrayspointerscharconstants

解决方案


这个声明有一个问题:

scanf("%s",&word);

word是一个chars 的数组。因此,要阅读它,您只需:

scanf("%s",word);

推荐阅读