C:分配给字符串时左值必需的错误

时间:2017-08-04 10:04:00

标签: c

我使用整数和char类型创建了一个简单的结构,在将“Structures”分配给LE结构字符串时,我面临一个Lvalue必需的错误。我不明白为什么,因为这通常是我如何分配一个字符串。

ID Latest Fail Date    Count
1  2017-02-04          3

1 个答案:

答案 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";