void main() { //输入字符串 char *str; scanf("%s",str); printf("输出输入的字符串*str=%s\
答案:7 悬赏:30
解决时间 2021-01-09 00:54
- 提问者网友:你独家记忆
- 2021-01-08 04:20
void main() { //输入字符串 char *str; scanf("%s",str); printf("输出输入的字符串*str=%s\n",&str); }
最佳答案
- 二级知识专家网友:愁杀梦里人
- 2021-01-08 05:26
str是一个字符指针,你没有为它申请空间就是用,自然会出错。改正:
char *str = (char*)malloc(100);
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
char *str = (char*)malloc(100);
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
全部回答
- 1楼网友:十年萤火照君眠
- 2021-01-08 09:52
你敢换成sprintf_s吗?
char name[50];
sprintf_s(name,"%s","aaaaa")
char name[50];
sprintf_s(name,"%s","aaaaa")
- 2楼网友:慢性怪人
- 2021-01-08 08:30
#include
#include
int main()
{
//char *str =(char*) malloc(100);//定义一个字符串指针,并且初始化100的大小
char str[100];//定义一个字符数组
printf("请输入一个字符串:");
scanf("%s",str);
printf("你输入的字符串是:%s",str);
return 0;
}
主要是您没有对指针进行分配内存空间。
一般情况指针都是需要分配空间的,否则的话是不能进行使用的。
对于字符串来说,我们可以使用字符数组跟字符指针两种方式完成。
#include
int main()
{
//char *str =(char*) malloc(100);//定义一个字符串指针,并且初始化100的大小
char str[100];//定义一个字符数组
printf("请输入一个字符串:");
scanf("%s",str);
printf("你输入的字符串是:%s",str);
return 0;
}
主要是您没有对指针进行分配内存空间。
一般情况指针都是需要分配空间的,否则的话是不能进行使用的。
对于字符串来说,我们可以使用字符数组跟字符指针两种方式完成。
- 3楼网友:话散在刀尖上
- 2021-01-08 06:57
//改成下面就可以了。
#include
void main()
{
char a[81],*str=a;
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
}
#include
void main()
{
char a[81],*str=a;
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
}
- 4楼网友:像个废品
- 2021-01-08 06:39
str未初始化,它指向的是一个不确定的地址,直接赋值是错误的,为了避免重要的数据被覆盖,系统会中止程序。
- 5楼网友:怙棘
- 2021-01-08 05:38
void main()
{
//输入字符串
char str[100]; //要给str分配存储空间
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str); //str已经是首地址,可以不用&
}
{
//输入字符串
char str[100]; //要给str分配存储空间
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str); //str已经是首地址,可以不用&
}
- 6楼网友:鸽屿
- 2021-01-08 05:32
这样使用容易造成内存错误。
char *str; 声明了一个指针,但没有对其进行初始化,他的值是一个无法预知的值。可能指向一段空的内存,也可能指向其他程序使用的内存地址,也可能不是无用的内存地址。
scanf("%s",str); 的意思是获取一段字符串,并把字符串放到str所指的内存地址之后的一段空间。但本程序并没有申请内存空间,所指的那段内存空间就是上面三种情况中的一种。所以有可能就将其他程序的内存内容给改变了,其他程序崩溃了。
printf("输出输入的字符串*str=%s\n",&str);
这个输出语句也存在问题,&str 应改为str,这的值是字符串地址的头指针,而不是str这个变量所在的地址。&str str这个变量在内存中的地址。str 的值是字符串地址的头指针
代码可修改如下
#include "stdafx.h"
int main(int argc, char* argv[])
{
char str[50];
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
return 0;
}
char *str; 声明了一个指针,但没有对其进行初始化,他的值是一个无法预知的值。可能指向一段空的内存,也可能指向其他程序使用的内存地址,也可能不是无用的内存地址。
scanf("%s",str); 的意思是获取一段字符串,并把字符串放到str所指的内存地址之后的一段空间。但本程序并没有申请内存空间,所指的那段内存空间就是上面三种情况中的一种。所以有可能就将其他程序的内存内容给改变了,其他程序崩溃了。
printf("输出输入的字符串*str=%s\n",&str);
这个输出语句也存在问题,&str 应改为str,这的值是字符串地址的头指针,而不是str这个变量所在的地址。&str str这个变量在内存中的地址。str 的值是字符串地址的头指针
代码可修改如下
#include "stdafx.h"
int main(int argc, char* argv[])
{
char str[50];
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯