错误C ++ | ISO C ++禁止分配数组

时间:2011-11-22 10:22:50

标签: c++

我有一个我无法解决的问题。 如果此查询的回答为“是”,那么anrede = female。

Dev ++给了我这个错误: ISO C ++禁止分配数组


char anrede[10];

printf("Anrede: female?? Yes/No");
scanf("%s", &anrede);

if(anrede == "Yes"){
    anrede = "female";
} else{
    anrede = "male";
}

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您的代码是C代码,C对初学者来说很难。 C ++更简单:

#include <iostream>
#include <string>

std::string anrede;

cout << "Anrede: female?? Yes/No";
std::getline(cin, anrede);

if(anrede == "Yes"){
    anrede = "female";
} else{
    anrede = "male";
}

答案 1 :(得分:2)

鉴于你的例子实际上是在C中,trojanfoe的优秀答案可能不适合你,在这种情况下你想要的是strcpy()和strcmp():

char anrede[7]; // increase to 7 to leave room for "female" plus the null byte

printf("Anrede: female?? Yes/No");
scanf("%6s", &anrede); // restrict read length to 6 chars + the null bute

if (strcmp(anrede, "Yes") == 0){
    strcpy(anrede, "female");
} else {
    strcpy(anrede, "male");
}

但如果你能避免它,你真的不想这样做。 strcpy()不知道缓冲区大小,因此它会快速运行在目标数组的末尾,并且会破坏程序的数据或立即崩溃。 strncpy()是一个很好的替代方案,具有最大长度参数,但它并不总是可用。

我会使用标准的C ++解决方案trojanfoe发布,除非你确实需要用C语言编写(在这种情况下,问题标记错误)。