1.如何修改结构体里面的name的名字
char string[15] = {"yadianna"}; //先定义一个新的字符串用于修改
strcpy(p->name, string);//字符串拷贝,p指针指向先前定义的name
printf("修改后的name = %s\n", p->name);
//注意:p->name = "kkk"; 这是不成立的。
//不能被直接赋值的原因:数组是不能直接赋值的,数组名代表元素的首地址,数组是常量地址,只能使用字符串拷贝函数strcpy把值直接拷贝进去,或者把数组中的每一个元素都取出来直接赋值。
2./* Student stu = {1, "lan ke", 'm', 96.5};
Student *p = &stu; */
请通过p将name成员第一个字母改成大写,把空格换成下划线
Student stu = {1, "lan ke", 'm', 96.5};
Student *p = &stu;
p->name[0] = 'L'; //数组不能直接赋值,但是可以单个元素赋值。
int i = 0;
while(p->name != '\0') { //循环结束的条件;字符串以'\0'结束
if(p->name[i] == ' ') { //找出空格的位置
p->name = '_'; //用下划线代替空格
}
i++;
}
printf("name = %s\n", p->name);
//这道题还可以用for循环来做
unsigned long length = strlen(p->name);
//计算字符串的长度,用于下面的for循环条件
for(int i = 0; i < length; i++){
if(p->name[i] == ' ') {
p->name = '_';
}
}