我有一个我无法解决的问题。 如果此查询的回答为“是”,那么anrede = female。
Dev ++给了我这个错误: ISO C ++禁止分配数组
char anrede[10];
printf("Anrede: female?? Yes/No");
scanf("%s", &anrede);
if(anrede == "Yes"){
anrede = "female";
} else{
anrede = "male";
}
有人可以帮助我吗?
答案 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语言编写(在这种情况下,问题标记错误)。