for(j=0;j<10;j++)
[i] score.name[j] = 'a';
[i] printf("%s请输入该生的语文 数学 英语成绩:",score.name);
[i] 是这句在输出时%s为乱码吗?一个个赋值name最后得到的应该不是字符串;把它改为
for(j=0;j<10;j++)
[i] score.name[j] = 'a';
[i] score.name[9]='\0';
[i] printf("%s请输入该生的语文 数学 英语成绩:",score.name);
就可以输出了。
我又错了..没有掌握好字符串的定义:以NULL结尾的字符序列
通过下面的代码测试了一下
但如果改为
这句输入的字符串也是静态存储的?在函数student结束后,结构数组score所占内存被释放,所以不能通过数组score的名字访问依然存在的字符串name对吗?
1.字符串是静态存储,但存放这些字符的数组不是静态存储
2.是的,但name不是字符串,是一个char数组
[i] score.name[j] = 'a';
[i] printf("%s请输入该生的语文 数学 英语成绩:",score.name);
[i] 是这句在输出时%s为乱码吗?一个个赋值name最后得到的应该不是字符串;把它改为
for(j=0;j<10;j++)
[i] score.name[j] = 'a';
[i] score.name[9]='\0';
[i] printf("%s请输入该生的语文 数学 英语成绩:",score.name);
就可以输出了。
我又错了..没有掌握好字符串的定义:以NULL结尾的字符序列
通过下面的代码测试了一下
程序代码:
#include <stdio.h> #define N 3 typedef struct { char name[10]; float chinese; float math; float english; }student; student *sum() { student score[N]; int i,j; for(i=0;i<N;i++) { for(j=0;j<10;j++){ score[i].name[j] = 'a'; } score[i].name[9]='\0'; score[i].chinese=3; score[i].math=3; score[i].english=3; printf("name:%s ",score[i].name); } printf("\n"); return (score); } int main(int argc,char **argv) { int i; student *ptr; ptr=sum(); for(i=0;i<N;i++) { printf("%s's chinese:%.2f math:%.2f english:%.2f\n", ptr->name,ptr->chinese,ptr->math,ptr->english); ptr++; } return 0; }第一行输出的姓名是乱码
但如果改为
程序代码:
#include <stdio.h> #define N 3 typedef struct { char *name; float chinese; float math; float english; }student; student *sum() { student score[N]; int i,j; for(i=0;i<N;i++) { //for(j=0;j<10;j++){ // score[i].name[j] = 'a'; //} //score[i].name[9]='\0'; score[i].name="aaaaa"; score[i].chinese=3; score[i].math=3; score[i].english=3; printf("name:%s ",score[i].name); } printf("\n"); return (score); } int main() { int i; student *ptr; ptr=sum(); for(i=0;i<N;i++) { printf("%s's chinese:%.2f math:%.2f english:%.2f\n", ptr->name,ptr->chinese,ptr->math,ptr->english); ptr++; } return 0; }第一行输出的名字就是正确的了
这句输入的字符串也是静态存储的?在函数student结束后,结构数组score所占内存被释放,所以不能通过数组score的名字访问依然存在的字符串name对吗?
1.字符串是静态存储,但存放这些字符的数组不是静态存储
2.是的,但name不是字符串,是一个char数组