帮我改正这个错误C

devilmoon_xp 2003-10-20 02:47:16
#include <stdio.h>
#include <string.h>

void main(){
char* name=NULL;
printf("请你输入姓名:\n");
scanf("%s",&name);
if(!strcmp(name,"Ben")){
printf("找到Ben!\n");
}else{
printf("未找到Ben!\n");

}
}
...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
knight0637 2003-10-20
  • 打赏
  • 举报
回复
你定义的name是一个指针,可是你没有使它指向某一地址,而是null,而null一般在头文件中被定义成-1,所以你的指针没有作用,正确的做法是中在定义:char *name后,给它动态分配一段内存,你可以用malloc函数,或简单的这样做:
char a[100];//形成一空间
name=a;//使指针指向这一空间
但即便这样你的程序还有问题,因为你的scanf函数中的第二个参数应是name,因为它已经是一个地址,你写成&name,就是name本身的地址,即指针的地址,当然不对
daizh 2003-10-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h> //添加
#include <string.h>

void main(){
char* name=(char *)malloc((unsigned int)10);//修改
printf("请你输入姓名:\n");
scanf("%s",&name);
if(!strcmp(name,"Ben")){
printf("找到Ben!\n");
}else{
printf("未找到Ben!\n");

}
}
anywn_cwh 2003-10-20
  • 打赏
  • 举报
回复
and

scanf("%s",&name);

should be

scanf("%s",name);
liao2001 2003-10-20
  • 打赏
  • 举报
回复
晕,竟然没仔细看,呵呵
scanf("%s",&name);
1。scanf把子符串输入到&name开始的内存段中了
2。name没分配空间,不过这不是这的问题,呵呵
试试:
char name[100];
scanf("%s",name);
liao2001 2003-10-20
  • 打赏
  • 举报
回复
呵呵
好简单哦
name没有分配空间

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧