请问为啥没有输出信息
【潜水】Joane 2018/12/14 星期五 上午 11:23:22
#include<stdio.h>
void main()
{
struct student
{
int num;
char *name;
char sex;
float score;
}boy1,boy2 = {1,"joane",'F',99.5};
boy1 = boy2;
printf("%d %s %s %f\n",boy1.num,boy1.name,boy1.sex,boy1.score);
printf("%d,%s,%s,%f",boy2.num,boy2.name,boy2.sex,boy2.score);
}
结构体不能这样赋值 本帖最后由 jackz007 于 2018-12-14 12:06 编辑
第 9、16、17 行代码有问题,已经修正,楼主可以试试下面的代码
#include<stdio.h>
main()
{
struct student
{
int num ;
char name ;
char sex ;
float score ;
} boy1 , boy2 = {1 ,"joane" ,'F' , 99.5} ;
boy1 = boy2 ;
printf("%d %s %c %f\n",boy1.num,boy1.name,boy1.sex,boy1.score);
printf("%d,%s,%c,%f\n",boy2.num,boy2.name,boy2.sex,boy2.score);
}
本帖最后由 sunrise085 于 2018-12-14 13:01 编辑
printf函数中有错误,char输出是%c,而不是%s。在第15、16行的printf中boy.sex那一项应该是%c,而不是%s。
我看楼上有人说结构体struct中字符串不能用指针,其实是可以的,只是用指针的话,运行中会有一个警告:warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
另外,结构体赋值也是没问题的。
若是打算解决那个警告的话,可以将指针声明为const,然后就没问题了。
#include <stdio.h>
void main(void) {
struct student
{
int num;
const char *name;
char sex;
float score;
}boy1,boy2 = {1,"joane",'F',99.5};
boy1 = boy2;
printf("%d %s %c %f\n",boy1.num,boy1.name,boy1.sex,boy1.score);
printf("%d,%s,%c,%f",boy2.num,boy2.name,boy2.sex,boy2.score);
}
页:
[1]