c语言中的指针数组、结构体、二维数组使用错误

img


#include<stdio.h>
struct month{
    char name[20];
    char shor[20];
    int day;
    int num;
};
int main(){
    struct month year[13];
    char dd[20][20]={"January","February","March","April","June","July","August","September","October","November","December"};
    char *cc[20]={"Jan","Feb","Mar","Apr","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    int i, j;
    for(i=1;i<=12;i++){
        year[i].day=30;
        year[i].num=i;
        year[i].shor=*cc[i-1];
        year[i].name=dd[i-1][20];
    }
    for(j=1;j<=12;j++){
        printf("%s,%s,%d,%d\n",year[j].name,year[j].shor,year[j].num,year[j].day);
    }
    return 0;
}

报错信息(Dev-c++5.11)
In function 'main':
16 15 [Error] assignment to expression with array type
17 15 [Error] assignment to expression with array type

用strcpy
(什么小天才,怎么十二个月的简称你就写了十一个,,五月怎么被吃了)
有帮助望采纳


#include <stdio.h>
#include <string.h>
struct month
{
    char name[20];
    char shor[20];
    int day;
    int num;
};
int main()
{
    struct month year[13];
    char dd[20][20] = {"January", "February", "March", "April", "June", "July", "August", "September", "October", "November", "December"};
    char *cc[20] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    int i, j;
    for (i = 1; i <= 12; i++)
    {
        year[i].day = 30;
        year[i].num = i;
        // year[i].shor = *(cc[i - 1]);
        strcpy(year[i].shor, cc[i - 1]);
        // year[i].name = dd[i - 1][20];
        strcpy(year[i].name, dd[i - 1]);
    }
    for (j = 1; j <= 12; j++)
    {
        printf("%s,%s,%d,%d\n", year[j].name, year[j].shor, year[j].num, year[j].day);
    }
    return 0;
}

数组不能直接给数组赋值
指针也不能直接给数组赋值
在这个地方可以使用strcpy()/strncpy这个函数把一个地址上的数据复制到另一个地址上去

#include <string.h>

char *strcpy(char *dest, const char *src);
用法:把src这个地址的地址的字符串赋值到dest这个地址去

char *strncpy(char *dest, const char *src, size_t n);
用法:把src这个地址的地址的n个字符串赋值到dest这个地址去