每当我编译程序时,我都会收到一个错误:警告C4047。我是用这种语言编程的新手,并不了解问题所在或如何解决问题。非常感谢任何帮助。谢谢。
错误具体在第word[x - 1] = "i";
行
void RuleOne(char word[], char plural[]) {
int x = strlen(word);
word[x - 1] = "i";
plural = strcat(word, "es");
}
答案 0 :(得分:6)
word[x - 1] = "i";
"i"
是字符串文字,而不是字符常量。
如果您需要字符,请使用单引号:
words[x - 1] = 'i';
^ ^
此外,你对plural
做错了。这是一个错误的工作:
plural = strcat(word, "es");
您实际上将"es"
追加到word
并让指针plural
指向与word
相同的地址,这显然不是您打算做的。尝试将word
附加es
复制到副本:
strcpy(plural, word);
strcat(plural, "es");
由于strcpy()
返回复制的字符串(缓冲区),您可以将其放在strcat()
内:
strcat(strcpy(plural, word), "es");
尽管如此,我建议您在完全理解它是如何工作之前不要这样做。
答案 1 :(得分:0)
您的代码中存在两个问题
1)确实如iBug提到的那样
words[x - 1] = 'i'; // not "i"
2)plural
未设置为复数版
// instead of >> plural = strcat(word, "es");
strcpy(plural, word);
strcat(plural, "es");
是你想要的。