我在编译以下行时遇到问题:
/*This code compiles with error*/
char HeLev1[6];
HeLev1[]="45.0";
/*but this is OK:*/
char HeLev1[6]="45.0";
我在编译以下行时遇到问题:
/*This code compiles with error*/
char HeLev1[6];
HeLev1[]="45.0";
/*but this is OK:*/
char HeLev1[6]="45.0";
您不能将值分配给数组。您需要一个一个地为数组元素赋值(或者,在处理字符串时,使用strcpy()
)
char HeLev1[6];
strcpy(HeLev1, "45.0");
char HeLev2[6];
HeLev2[0] = '4';
HeLev2[1] = '5';
HeLev2[2] = '.';
HeLev2[3] = '0';
HeLev2[4] = '\0'; /* properly "terminate" the string */
请注意,在您的代码中,OK 部分,您有一个数组初始化,而不是赋值。
另请注意,在上述两种情况下,第 6 个元素(HeLev1[5]
或HeLev2[5]
)具有未定义的值(垃圾)。
您只能在初始化时将整个值分配给数组。就像这些是正确的形式,
char HeLev1[6]="45.0";
int array[3]={1,2,3};
char HeLev1[]="45.0";
int array[]={1,2,3};
但是一旦你跳过了这部分。您必须逐个元素分配元素。喜欢,
char HeLev2[6];
HeLev2[0] = '4';
HeLev2[1] = '5';
HeLev2[2] = '.';
HeLev2[3] = '0';
HeLev2[4] = '\0'; /* properly "terminate" the string */
或者你可以使用 memcpy 或 strcpy。