2017-05-22 33 views
-1

所以即时通讯尝试构建一个coe使用一个字符串来检查anagrams,每次在原始字符串中显示一个字母时会添加一个字符。不能使用strcmp

即时通过比较两个字符串与strcmp做到这一点,但由于某种原因,我总是得到字符串是平等的,即使他们不是,真的会感激一些反馈。

谢谢!

int firstWord[] = { 0 }, secondWord[] = { 0 }, len, i, j, anagrams=0; 
char string[1000]; 

gets_s(string, sizeof(string)); 
len = strlen(string); 
i = 0; 
while (i < len) { 
    if (string[i] == ' ') { 
     for (j = i + 1; j < len; j++) { 
      secondWord[string[j]]++; 
     } 
    } 
    if (string[i] != ' ') 
     firstWord[string[i]]++; 
    if (strcmp(firstWord, secondWord) == 0) { 
     anagrams++; 
    } 
    i++; 
} 
+0

看看你的代码来填写'firstWord'和'secondWord',我不认为他们正在做你认为他们正在做的事... 它**看起来像我**像'firstWord'将结束与所有不是空格的字符一起使用。而这个'secondWord'具有从空格后面的字符开始的行的内容。 –

+0

你想达到的实际目标是什么......它不是很清楚......但是一个建议的话......尽量避免将数组作为一个角色的索引......你可以借给很大的麻烦,也可以非常意外的结果 –

+0

@ShreyanMehta嗨感谢您的重播。即时通讯尝试计算每个字母出现在给定单词中的次数,以便我可以检查两个单词是否是对方的字母,事情是比较不会因为某种原因而起作用,它会一直持续在if(strcmp(第一个字,第二个字)== 0)由于某种原因 – user7792712

回答

2

你的阵列firstWordsecondWord每个只有容量的单int。数组不会像您的代码假设那样动态调整大小。

int firstWord[] = { 0 } 

该代码表示​​创建具有与所述值0在它恰好一个元件的阵列。

下列行:

firstWord[string[i]]++; 
secondWord[string[j]]++; 

二者损坏随机存储器和在所有延长阵列。

+0

好吧谢谢,但是当我将字符串更改为例如firstWord [300],secondWord [300]时它仍然不起作用 – user7792712

+0

@ user7792712尝试在'strcmp'之前打印“firstWord”和“secondWord”的内容以查看是否你在比较你的想法。 –

+0

嗯,它打印一堆或随机数....任何想法如何解决这个问题? – user7792712