首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这样运行不了如何改

2012-12-31 
这样运行不了怎么改?#include stdio.htypedef struct{char name[30]char num[30]}uservoid main(){us

这样运行不了怎么改?
#include <stdio.h>
typedef struct{
char name[30];
char num[30];
}user;
void main()
{
user userinfo;
char name[30];
char num[30];
scanf("%s%s",name,num);
printf("%s %s",name ,num);
userinfo.name=name;
userinfo.num=num;
printf("%s %s",userinfo.name,userinfo.num);
}
这样怎么不过,怎么改?
[解决办法]


#include <stdio.h>
typedef struct
{
char name[30];
char num[30];
}user;
void main()
{
user userinfo;
char name[30];
char num[30];
scanf("%s\n%s\n",name,num);
printf("%s\n %s\n",name ,num);
strcpy(userinfo.name,name);
strcpy(userinfo.num,num);
printf("%s\n %s\n",userinfo.name,userinfo.num);
}

[解决办法]
userinfo.name=name;
userinfo.num=num;
改成
memcpy(userinfo.name, name, strlen(name));
memcpy(userinfo.num, num, strlen(num));
前面还加
memset(&userinfo, 0x00, sizeof(user));
[解决办法]

#include <stdio.h>
#include <string>
typedef struct {
char name[30];
char num[30];
}user;
void main()
{
user userinfo;
char name[30];
char num[30];
scanf("%s%s",name,num);
printf("%s %s",name ,num);
//userinfo.name=name;
strcpy(userinfo.name,name);
strcpy(userinfo.num,num);
//userinfo.num=num;
printf("%s %s",userinfo.name,userinfo.num);
}


userinfo.name是char *,不能直接赋值
[解决办法]
#include <stdio.h>
#include <string.h>
typedef struct {
    char name[30];
    char num[30];
} user;
int main() {
    user userinfo;
    char name[30];
    char num[30];
    fgets(name,29,stdin);
    if ('\n'==name[strlen(name)-1]) name[strlen(name)-1]=0;
    fgets(num,29,stdin);
    if ('\n'==num[strlen(num)-1]) num[strlen(num)-1]=0;
    printf("name=[%s],num=[%s]\n",name ,num);
    strcpy(userinfo.name,name);
    strcpy(userinfo.num,num);
    printf("userinfo.name=[%s],userinfo.num=[%s]\n",userinfo.name ,userinfo.num);
    return 0;
}

热点排行