linux 编程的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:15:38
#include<string.h>
#include<stdio.h>

int main()
{
int a;
char *b;
scanf("%s",b);
a=strlen(b);
printf("%d",a);
return 0;
}
怎么会提示段错误呢????????
为什么不能用指针呢????
为什么不分配空间就不行呢

#include<string.h>
#include<stdio.h>
#include<stdlib.h>//加一句
int main()
{
int a;
char *b;
b=(char *)malloc(30);//申请空间
scanf("%s",b);
a=strlen(b);
printf("%d\n",a);
return 0;
}

指针所存储的 是 数据的地址,不是数据本身,就像是指针是地图,记录的是某仓库的地址,而你要存或你要取东西,都要到仓库里,在地图上你是不能存放东西的,也取不出东西。还有是指针不可以乱指,如果你的地图无意间指向了军火库甚至核武库,你在里面随便存,乱取,后果你可以想像。所以有些事,系统是不会让你得逞的

不是不能用指针,是你没有为他分配空间
char *b改成char b[20];或者char *b=(char *)malloc(20);

b是指针!
不能用scanf来指定指针!

你不给分配哦那个键 输入的变量往哪里放啊? 你这样写 b指向的空间是随机的 是很危险的

char*b改为
char*b=NULL;
令B先指向一个空值

char *b改成char b【count】;