| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖
标题:字符串比较问题,目前编译通过后,输入字符串就报错。
只看楼主 加入收藏
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
字符串比较问题,目前编译通过后,输入字符串就报错。
#include <stdio.h>
#include <string.h>

main()
{int t=0;
char *s1,*s2;
gets(s1);
gets(s2);
while(*s1!='\0'&&*s2!='\0')
{if(*s1!=*s2)
 {t=1;break;}                     
 s1++;
 s2++;}
if(t==0)
printf("YES");
else
printf("NO");
  system("PAUSE");   
  return 0;
}
请大家帮忙看看 为什么 会出现这个问题。 或者说代码哪边 是不是有问题。
搜索更多相关主题的帖子: 输入 编译 字符 
2010-03-08 13:28
aicccm
Rank: 1
等 级:新手上路
帖 子:8
专家分:8
注 册:2010-3-8
收藏
得分:6 
我用 win-tc 编译  没错啊  都通过了 输入也没问题

不过好像结果都是 YES   

[ 本帖最后由 aicccm 于 2010-3-8 13:37 编辑 ]
2010-03-08 13:31
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
你的s1,s2是野指针,要给它们分配空间,否则是随机的地址
少用gets,不检查是否溢出
2010-03-08 13:37
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{int t=0;
char *s1,*s2;
char a[10],b[10];
s1=a;
s2=b;
gets(s1);
gets(s2);
while(*s1!='\0'&&*s2!='\0')
{if(strcmp(s1,s2)!=0) //比较字符串
{t=1;break;}                     
s1++;
s2++;}
if(t==0)
printf("YES");
else
printf("NO");
  system("PAUSE");   
  return 0;
}
2010-03-08 13:46
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
书上说字符类的数组指针可以直接赋予的  系统默认会有S=a,这个语句的  难道是书上说错了? 我是新手 LS的莫见怪

初学者,
2010-03-08 13:48
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
3楼 4楼的 你们说的都没错 ,我那样也尝试过了  可以通过,一楼的朋友 我那程序可以变成NO的 只要你输入不一样的

初学者,
2010-03-08 13:53
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
看来书上也是有忽悠人的时候的 晕啊  偶是自学的  经不起被骗啊

初学者,
2010-03-08 13:54
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
#include <stdio.h>
main()
{char *string="i am student";
 printf("%s",string);
  system("PAUSE");   
  return 0;
}
楼上的大虾帮忙分析 为什么 这样又可以输出呢 ,

初学者,
2010-03-08 13:57
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
可以输出呀,但是你不可以更改它的值
char *string = "i am student"  表示把字符串"i am student"的地址赋予string,"i am student"是存储在数据段上的
2010-03-08 14:01
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
string和上面题目中的S1和S2都是指针变量,为什么我在程序中提前写入*string = "i am student" 就没问题,通过编译后 在界面输入到S1 和 S2就出问题了呢  这边我有点模糊

初学者,
2010-03-08 14:04
快速回复:字符串比较问题,目前编译通过后,输入字符串就报错。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018497 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved