我将我的结构定义为:
struct taxPayer{
char name[25];
long int socialSecNum;
float taxRate;
float income;
float taxes;
};
我的主要功能包括:
taxPayer citizen1, citizen2;
citizen1.name = "Tim McGuiness";
citizen1.socialSecNum = 255871234;
citizen1.taxRate = 0.35;
citizen2.name = "John Kane";
citizen2.socialSecNum = 278990582;
citizen2.taxRate = 0.29;
编译后给我一个错误(C3863数组类型char[25]
不可分配,表达式必须是可修改的左值)citizen1.name = "Tim McGuiness";
以及citzen2.name = "John Kane";
如何删除此错误并将citizen1.name
设置为名称,将citizen2.name
设置为其他名称?
答案 0 :(得分:3)
您无法分配数组。您可以做的是使用std::string
或使用std::strcpy/std::strncpy
,例如
std::strncpy(citizen1.name,"Tim McGuiness", sizeof(taxPayer::name));
由于您使用C ++,我建议使用std::string
,
struct taxPayer
{
std::string name;
// the rest
};
然后您可以像在代码中一样分配给它
citizen1.name = "Tim McGuiness";
答案 1 :(得分:1)
在c中,数组只能在初始化期间分配,citizen1.name是char类型的数组。要解决您的问题,您可以使用:
strcpy(citizen1.name, "Tim McGuiness");
或:
memcpy(citizen1.name, "Tim McGuiness", strlen("Tim McGuiness"));
citizen1.name[strlen("Tim McGuiness") + 1] = '\0';
答案 2 :(得分:0)
我已经做了一些研究,也许有点晚了,但可能会帮助这里的人。
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int i, j;
char cuvinte[5][10] = { "a", "b", "c",
"da", "e" };
char temp[10];
int lungime = sizeof(cuvinte) / sizeof(cuvinte[0]);
for (i = 0; i < lungime - 1; i++) {
for (j = 0; j < lungime - 1; j++) {
if (strcmp(cuvinte[j], cuvinte[j+1]) < 0) {
strcpy_s(temp, cuvinte[j]);
strcpy_s(cuvinte[j],cuvinte[j+1]);
strcpy_s(cuvinte[j+1],temp);
}
}
}
for (i = 0; i < lungime;i++) {
cout << cuvinte[i] << " ";
}
system("pause");
}