C代码 为什么输出的是乱码
能把代码贴全吗?然后把输出也贴出来 BngThea 发表于 2018-7-13 15:05能把代码贴全吗?然后把输出也贴出来
就是这样 72行,stu前面的取地址去掉 BngThea 发表于 2018-7-13 15:36
72行,stu前面的取地址去掉
这里的&去不去掉 都是乱码 一样的 ジ秋水 发表于 2018-7-13 17:16
这里的&去不去掉 都是乱码 一样的
你输入了什么 BngThea 发表于 2018-7-13 17:21
你输入了什么
输入字母 本帖最后由 关键是感觉 于 2018-7-13 17:51 编辑
#include <stdio.h>
struct b{
char name;
};
int main(){
struct b stu;
scanf("%s",stu.name);
printf("stu.name=%s\n",(*stu).name);
scanf("%s",&stu.name);
printf("stu.name=%s\n",stu.name);
//stu.name是一个地址
//根据优先局 .比&高 先结合 stu.name 在对一个地址 :& 地址 还是原来的地址
//但是我感觉这个说法有点问题,如果你对一个地址在取一个地址在某些情况有出错比如
//int b; printf("%p %p\n",&b,&&b);
//还有一个情况是这样 int array={0}; printf("%p %p",array,&array);
//array其实是一个常量地址 但是对一个常量地址 & ,他们结果是一样的
printf("%p %p %p\n",stu.name,&stu.name,&(stu.name));
//说了那么多,其实错误和 &没关系
//和scanf_s有关系,也和编译器有关系
//例如scanf(“%s”,&name,n),整形n为name类型的大小,如果name是数组,那n就是该数组的大小。
//参数3有一个长度,而你没有加
//在dev-c++ 有自动帮你处理,在VC没有处理,看gif
scanf_s("%s",stu.name);
printf("stu.name=%s\n",(*stu).name);
scanf_s("%s",&stu.name,256);
printf("stu.name=%s\n",stu.name);
return 0;
}
页:
[1]