关于char *类型直接输入的问题

兄弟姐妹们帮我教下,关于char *类型直接输入的问题
最新回答
漫妙幽离

2024-11-08 04:38:17

char
*string
是指针,指针在使用的时候需要分配空间,使用malloc分配足够大的空间
char
*string="hello";是string指向了一个字符串常量,string指向的内容不能修改,只能修改string的地址,但是string执行的地址仍然是null,所以scanf还是会出问题,如果想用scanf最好使用数组,即:char
string[1024]={0};
scanf(“%s”,string);
杯别

2024-11-08 01:54:24

char
*string
=
"hello";这样初始化之后,表示指针指向字符串常量,是只读的,不可改变。所以你再向string赋值,就会出错了。
正确的程序:
#include
#include
#include
int
main()
{
char
*string
=(char
*)malloc(10*sizeof(char));//你得申请内存空间
scanf("%s",string);
if(strcmp(string,"A")
==
0
||
strcmp(string,"a")
==
0)
printf("succeeded!\n");
else
puts("failed!");
puts("\n");
system("pause");
return
0;
}
怎忘

2024-11-08 00:21:03

因为你试图访问非法的内存地址:char
*string
=
NULL;时,这个地址是0,直接会表现出来。
你说的string没有初始化是指
char*string;么?这样也是会出问题的,只是没有表现出来,如果没有初始化string,那么指针的值是一个随机值。
只要不是预先分配好的空间,你往里写入东西就是错误的。
和旋帅哥

2024-11-08 04:00:54

#include
"stdio.h"
void
main()
{
char
x,y,z;
x='a';
y='\t';
z='b';
printf("第1行为:%c%c%c\n",x,y,z);
printf("第2行为:%c%c%c%c\n",x,y,y,z);
}
这个程序是这样写是正确的,你y赋的值是
制表符
占用八字符位!
如果你把x改为
字符数组
你的源程序就是对的!
窗外的海风吹过

2024-11-08 02:10:57

string好像是系统关键字吧。试试换个别的变量名,如char
*ch;