问题描述
- c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求
-
#include
#include
int main()
{
char*s;
scanf("%s",s);
//printf("%sn",s);
//int n = strlen(s);
//printf("%dn",n);
char ret[56];
return 0;
}
解决方案
s只是指针变量,没有分配内存
char*s;
s = malloc(size);
scanf("%s",s);
解决方案二:
你要知道指针是指向内存中的一块内存地址,char*s;, 而你往指针里面存放数据到底是什么意图?
解决方案三:
#include
int main()
{
char a[10];
char *s=a;
scanf("%s",a);
printf("%sn", a);
printf("%sn",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("%sn",s);
int n = strlen(s);
printf("%dn",n);
char ret[56];
return 0;
}
时间: 2024-08-24 00:03:20