警告C4047:' =':' char'不同的间接水平来自' char [2]'

时间:2017-11-23 04:03:01

标签: c

每当我编译程序时,我都会收到一个错误:警告C4047。我是用这种语言编程的新手,并不了解问题所在或如何解决问题。非常感谢任何帮助。谢谢。

错误具体在第word[x - 1] = "i";

void RuleOne(char word[], char plural[]) {

    int x = strlen(word);

    word[x - 1] = "i";

    plural = strcat(word, "es");

}

2 个答案:

答案 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");

是你想要的。