【问题标题】:assign a string to a structure variable in c [duplicate]将字符串分配给c中的结构变量[重复]
【发布时间】:2014-03-07 09:59:58
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
typedef struct t_name
{
     char last_name[25];
     char first_name[15];
     char middle_init[2];
} NAME;
NAME my_name, your_name;
int main()
{
    char temp[] = "sumit";
    printf("Program started\n");
    my_name.first_name=temp;
    your_name = my_name;
    NAME abc=my_name;
    printf("my_name=%s\n",my_name.first_name);
    printf("your_name=%s\n",your_name.first_name);
    printf("abc=%s\n",abc.first_name);
}

但是下面的语句my_name.first_name=temp;出现错误

【问题讨论】:

    标签: c arrays string compiler-construction structure


    【解决方案1】:

    错误:从类型“char *”分配给类型“char[15]”时类型不兼容

    define variable char *first_name
    

    而不是

    char first_name[15];
    

    试试这个

    typedef struct t_name{
    
    char *first_name;
    char *middle_init;
    char *last_name;
    }NAME;
    NAME my_name,your_name;
    
    int main()
    {
    char temp[] = "sumit";
    printf("Program started\n");
    my_name.first_name=temp; // now you can assign value
    your_name = my_name;
    NAME abc=my_name;
    printf("my_name=%s\n",my_name.first_name);
    printf("your_name=%s\n",your_name.first_name);
    printf("abc=%s\n",abc.first_name);
    }
    

    【讨论】:

      【解决方案2】:

      错误是(您应该发布的内容):

      error: incompatible types when assigning to type ‘char[15]’ from type ‘char *’
      

      你不能像这样复制字符串,你需要一个字符一个字符地复制或者使用库函数strcpy()

      【讨论】:

        【解决方案3】:

        在 C 中,您不能使用 = 来分配字符串。 你应该使用strcpy(),就像这个例子:

        /* strcpy example */
        #include <stdio.h>
        #include <string.h>
        
        int main ()
        {
          char str1[]="Sample string";
          char str2[40];
          char str3[40];
          strcpy (str2,str1);
          strcpy (str3,"copy successful");
          printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
          return 0;
        }
        

        来自http://www.cplusplus.com/reference/cstring/strcpy/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-19
          • 2021-05-12
          • 1970-01-01
          • 1970-01-01
          • 2011-07-13
          • 2021-04-29
          • 2022-01-14
          相关资源
          最近更新 更多