c - 为什么在函数中将 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[]
,所以它应该是可修改的。但它显示了分段运行时错误。为什么以及我做错了什么?
解决方案
这个声明有一个问题:
scanf("%s",&word);
word
是一个char
s 的数组。因此,要阅读它,您只需:
scanf("%s",word);
推荐阅读
- java - 使用默认弹簧日志添加日志记录?
- php - 如果使用左连接的所有表中的一列名称相同,则打印列值
- javascript - 使用 forEach 遍历 vanilla JS 中的数组对象
- c++ - 如何在 VSCODE 中使用 OpenCV c++
- java - 将大型 PDF 文件与 PDFBox 合并时出错 - 缺少文件结尾标记“%%EOF”
- c# - 如何在弹出窗口后面显示弹出窗口?
- javascript - React/Redux 如何传递参数来修改 API
- php - 更新一个匹配 twitter 喜欢提及的正则表达式以允许点
- python - 收到错误时如何删除 NaN:ValueError:输入包含 NaN
- python-3.x - 如何编写一个 for 循环,将代码模板写入 python 3.7 中的文件