在C

2014-03-07 17 views
1
#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

回答

2

错误:不兼容的类型分配给输入时“的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

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

3

的误差修改为(东西,你应该已经张贴):

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

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