#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;
答案 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;
}
答案 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);
}