gpt4 book ai didi

c - 错误 C2106 : '=' : left operand must be l-value in c on VS2008

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:43 25 4
gpt4 key购买 nike

您好,我在 Visual Studio 2008 上尝试此代码时无法找到编译错误的原因。我试图查看函数返回值的 char* 示例。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char* getActiveModuleType(void);
void main()
{
char getActiveModuleBuff[128];
//error C2106: '=' : left operand must be l-value
getActiveModuleBuff = getActiveModuleType();
printf("Active module in well formatted (2): %s\n",getActiveModuleBuff);

exit(0);
}
char* getActiveModuleType(void)
{
char activeModule[128];
int tempBuffLen=0;
int nbActivemodule = 0;
char moduleA = 1;
char moduleB = 1;
char moduleC = 0;
char moduleD = 1;
int i = 0;
if(moduleA==1) {activeModule[i] ='A'; activeModule[i+1]=','; i= i+2;}
if(moduleB==1) {activeModule[i] ='B'; activeModule[i+1]=','; i= i+2;}
if(moduleC==1) {activeModule[i] ='C'; activeModule[i+1]=','; i= i+2;}
if(moduleD==1) {activeModule[i] ='D'; activeModule[i+1]=','; i= i+2;}

printf(" Active module in : %s\n",activeModule);
//let get get the last ',' value trucated
tempBuffLen = strlen(activeModule);
nbActivemodule = tempBuffLen/2;
if((tempBuffLen == 0) && (nbActivemodule ==0)){
memcpy(activeModule,"NoActiveModule",14);
return activeModule;
}
if(activeModule[tempBuffLen-1]==',')
activeModule[tempBuffLen-1] = '\0';
printf(" Active module in well formatted : %s\n",activeModule);

return activeModule;
}

我无法找到此代码中出现此错误 C2106 的原因。 需要帮助。
谢谢

最佳答案

char getActiveModuleBuff[128];
getActiveModuleBuff = getActiveModuleType();

您不能在 C 中为数组赋值。

使用memcpy 复制数组或使用strcpy/strncpy 复制字符串。

也在:

 char* getActiveModuleType(void)
{
char activeModule[128];
/* ... */
return activeModule;
}

activeModule 数组对象在函数结束时被销毁。在函数返回后访问它是未定义的行为。

关于c - 错误 C2106 : '=' : left operand must be l-value in c on VS2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113713/

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