首页 > 解决方案 > 指向从 char[13] 分配给 char 的整数转换的不兼容指针

问题描述

我已经创建了一个学生结构,当我为结构内定义的字符数组分配名称时,它给了我一个错误“不兼容的指针指向整数转换,将 char 分配给 char [13] ....任何人都可以解释我的原因为什么会这样?

int main()
{
    typedef union {
        int roll_no;
        char name[30];
    } student;
    student student1;
    student1.roll_no = 5;
    student1.name[30] =
        "shivam kumar"; // this is line where it is giving me error
    printf("\n%d", student1.roll_no);
    printf("\n%s", student1.name);

    return 0;
}

标签: arrayscstringcharstructure

解决方案


在 C 中,您不能以这种方式复制字符串:

    student1.name[30] =
        "shivam kumar"; // this is line where it is giving me error

而是使用strcpy

student student1 = {0};
student1.roll_no = 5;
strcpy(student1.name, "shivam kumar");  //<--

最好使用strncpy来确保目标缓冲区没有溢出:

 strncpy(student1.name, "shivam kumar", sizeof(student1.name));
 student1.name[sizeof(student1.name) - 1] = '\0';   // make sure it's NUL-terminated.

推荐阅读