gpt4 book ai didi

c - 在赋值中获取不兼容的类型

转载 作者:行者123 更新时间:2023-11-30 15:26:33 26 4
gpt4 key购买 nike

这是两种结构,客户和员工

struct client
{
char clID[10];
char cname[50];
char caddress[99];
char cemail[99];
char cfees[6];
char ceID[10];
char cename[50];
}typedef client;

struct employee
{
char empID[10];
char ename[50];
double erate;
double ehours;
double esalary;
int clientCount;
}typedef employee;

这是一个搜索案例,其中输入客户端信息后,系统会提示用户通过 ID 分配员工,然后将存储在该 ID 中的员工姓名添加到客户端结构中的 cename

case 1: getClient(clCount, pcli);
printf("Enter an employee to assign to this client: ");
scanf("%9s", searchID);
searchEmp(searchID, pemp, empCount);
foundAt = searchEmp(searchID, pemp, empCount);
if(foundAt >= 0)
if(pemp[foundAt].clientCount < 5)
{
strcpy(pcli[clCount].ceID, searchID);

这一行是错误的来源pcli[clCount].cename = pemp[foundAt].ename;

                                pcli[clCount].cename = pemp[foundAt].ename;
pemp[foundAt].clientCount++;
}
else
{
printf("Max clients reached for this employee!");
}
else
printf("%s is not found anywhere\n", searchID);
clCount++;
break;

搜索方法:

int searchEmp(char* searchID, employee* pemp, int empCount)
{
int i = 0;
for(i = 0; i < empCount; i++)
{
if(strcmp(searchID,(pemp + i)->empID)==0)
{
return i;
}
}
return -1;
}//end searchClient

最佳答案

只需使用strcpy:

strcpy(pcli[clCount].cename, pemp[foundAt].ename);

strncpy:

strncpy(pcli[clCount].cename, pemp[foundAt].ename, sizeof(pcli[clCount].cename)-1);
pcli[clCount].cename[sizeof(pcli[clCount].cename)-1] = '\0';

文字赋值在 C 中的工作方式与 C++ 中的字符串工作方式不同。它们不会自动复制。他们的地址将被复制,但在这里你甚至使用静态缓冲区......

关于c - 在赋值中获取不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27329505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com