void main() { ⼀⼀输入字符串 char *str; scanf("%s",str); printf("输出输入的字符串*str=%s尀n",&str); }

为什么没有结果。。。急
2024-11-07 23:38:53
推荐回答(5个)
回答1:

这样使用容易造成内存错误。
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;
}

回答2:

str是一个字符指针,你没有为它申请空间就是用,自然会出错。改正:
char *str = (char*)malloc(100);
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);

回答3:

#include
#include
int main()
{
//char *str =(char*) malloc(100);//定义一个字符串指针,并且初始化100的大小

char str[100];//定义一个字符数组

printf("请输入一个字符串:");
scanf("%s",str);

printf("你输入的字符串是:%s",str);

return 0;
}

主要是您没有对指针进行分配内存空间。

一般情况指针都是需要分配空间的,否则的话是不能进行使用的。
对于字符串来说,我们可以使用字符数组跟字符指针两种方式完成。

回答4:

//改成下面就可以了。
#include
void main()
{
char a[81],*str=a;
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str);
}

回答5:

void main()
{
//输入字符串
char str[100]; //要给str分配存储空间
scanf("%s",str);
printf("输出输入的字符串*str=%s\n",str); //str已经是首地址,可以不用&
}