c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

#include
#include
int main()
{
char*s;
scanf("%s",s);
//printf("%s\n",s);
//int n = strlen(s);
//printf("%d\n",n);
char ret[56];
return 0;
}

你要知道指针是指向内存中的一块内存地址,char*s;, 而你往指针里面存放数据到底是什么意图?

#include
int main()
{
char a[10];
char *s=a;

scanf("%s",a);

printf("%s\n", a);
printf("%s\n",s);

return 0;

}


char *s;
是指定义了一个字符型指针变量,它(s),只能用于存放地址。
char a[10];
s = a;
是因为a是一个数组,而数组名表示数组的首地址,所以可以这样使用。
但并不是表示s可以存放a中的所有值。

修改后的代码:

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char*s;
s=(char *)malloc(10*sizeof(char));   //申请10个字符的空间来存储字符串.
scanf("%s",s);
printf("%s\n",s);
int n = strlen(s);
printf("%d\n",n);
char ret[56];
return 0;
}