ジ秋水 发表于 2018-7-13 14:56:50

C代码 为什么输出的是乱码

BngThea 发表于 2018-7-13 15:05:56

能把代码贴全吗?然后把输出也贴出来

ジ秋水 发表于 2018-7-13 15:19:49

BngThea 发表于 2018-7-13 15:05
能把代码贴全吗?然后把输出也贴出来



就是这样

BngThea 发表于 2018-7-13 15:36:54

72行,stu前面的取地址去掉

ジ秋水 发表于 2018-7-13 17:16:20

BngThea 发表于 2018-7-13 15:36
72行,stu前面的取地址去掉

这里的&去不去掉 都是乱码 一样的

BngThea 发表于 2018-7-13 17:21:57

ジ秋水 发表于 2018-7-13 17:16
这里的&去不去掉 都是乱码 一样的

你输入了什么

ジ秋水 发表于 2018-7-13 17:26:00

BngThea 发表于 2018-7-13 17:21
你输入了什么

输入字母

关键是感觉 发表于 2018-7-13 17:34:01

本帖最后由 关键是感觉 于 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]
查看完整版本: C代码 为什么输出的是乱码