2 lex glimmer lex_glimmer 于 2016.04.17 21:55 提问

C语言的比较基础的问题

是要判断两个字符串是否由相同字母组成,大小写不论,字符串中的—也不考虑,例如garden ranged
earth heart
veil evil
Roll_in_the_hay Thrill_a_honey都是正确的
代码如下
#include
#include
char* var(char a[])
{
int i, j = 0;
char b = new char[100];
for(i = 0; i < 100; i++)
{
if(a[i] != '_')
{
b[j] = a[i];
j++;
}
else if(a[i] == '\0')
break;
}
b[j] = '\0';
return b;
}
int judge1(char var1[], char var2[]) //判断是否完全相同
{
unsigned int j;
for(j = 0; j < 26; j++)
{
if(var1[j] != var2[j]) break;
}
if(j == 25) return 0;
else return 1;
}
char
judge2(char var[]) //计算词频
{
char *b = new char[26];
unsigned int i, j, l, k = 65;
for(i = 0; i < 26; i++)
{
l = 0;
for(j = 0; j < strlen(var); i++)
{
if((unsigned int)var[j] == k || (unsigned int)var[j] == k + 32) l++;
}
b[i] = l;
k++;
}
return b;
}
int main()
{
char p1[100];
char p2[100];
scanf("%s%s", p1, p2);
while(getchar() != '\n');
if(judge1(judge2(var(p1)), judge2(var(p2))) == 1) printf("Yes\n");
else printf("No\n");
return 0;
}
现在运行时输入后就卡住不动了,求教大神就是输入比如DOCTOR_WHO TORCHWOOD然后,就没有然后了
小白,没有金币,555555

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.17 22:10
已采纳

var函数里for循环会进行100次,此时i已经是100了
再执行b[j] = '\0';已经造成越界了
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

lex_glimmer
lex_glimmer 谢谢^ω^
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.17 22:02

C语言基础问题
c语言基础问题
【C语言最基础的输出问题】
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_27416233
qq_27416233   2016.04.18 15:46

写的麻烦了. 你可以全部转化为小写的.之后再把ASC数值加在一起 ,

qq_27416233
qq_27416233 回复lex_glimmer: 留个联系方式.我也在 研究C一起研究
一年多之前 回复
lex_glimmer
lex_glimmer 好棒的创意
一年多之前 回复
herozhangbz
herozhangbz   2016.04.17 23:05

有这么麻烦么?写一个toupper或者tolower函数然后直接==看是否相等

herozhangbz
herozhangbz 理解错了……
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!