我使用整数和char类型创建了一个简单的结构,在将“Structures”分配给LE结构字符串时,我面临一个Lvalue必需的错误。我不明白为什么,因为这通常是我如何分配一个字符串。
ID Latest Fail Date Count
1 2017-02-04 3
答案 0 :(得分:2)
一个简单的方法是(如果你不想打电话给strcpy
):
#include<stdio.h>
struct Lesson{
int lessonNumber;
char *lessonName;
}LE;
int main(void){
LE.lessonName = "Structures";
LE.lessonNumber = 1;
printf("%s",LE.lessonName);
printf("%d",LE.lessonNumber);
}
此处lessonName
是一个指针而不是一个数组。使用赋值运算符LE.lessonName = "Structures"
,您将字符串“Structures”的存储位置分配给LE.lessonName
。
我不明白为什么。因为那通常是我如何分配一个 串
这里有几点要记住。如果您将lessonName
声明为数组(就像您所做的那样),您应该记住,数组不是您可以分配的数组。您可以分配的是使用=
运算符的数组中的特定位置/索引。因此,您可以逐个字符地构建c-string,或者可以调用strcpy
函数将字符串逐字符(包括\0
)复制到lessonName
。
当您使用指针(char *lessonName
)并说出LE.lessonName = "Structure"
之类的内容时,无法修改此字符串。你做不到LE.lessonName[0] = 'g'
。当然,您可以稍后修改LE.lessonName
以指向其他字符串,例如LE.lessonName = "cat";
。