将字符串赋给c中的结构变量

时间:2014-03-07 09:59:59

标签: c arrays string compiler-construction structure

#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;

中发生错误

3 个答案:

答案 0 :(得分:3)

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

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

您不能复制这样的字符串,您需要逐个字符地复制或使用库函数strcpy()

答案 1 :(得分:2)

在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/

答案 2 :(得分:2)

错误:从'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);
}