【发布时间】:2015-03-27 18:17:46
【问题描述】:
我正在尝试制作将所有字母从字母表与我插入的字符串进行比较的函数,并打印我没有使用的字母。但是当我打印这些字母时,它会过去并在最后给我随机符号。这是函数的链接,我如何调用函数和结果:http://imgur.com/WJRZvqD,U6Z861j,PXCQa4V#0
这里是代码:(http://pastebin.com/fCyzFVAF)
void getAvailableLetters(char lettersGuessed[], char availableLetters[])
{
char alphabet[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int LG,LG2,LA=0;
for (LG=0;LG<=strlen(alphabet)-1;LG++)
{
for(LG2=0;LG2<=strlen(lettersGuessed)-1;LG2++)
{
if (alphabet[LG]==lettersGuessed[LG2])
{
break;
}
else if(alphabet[LG]!=lettersGuessed[LG2] &&LG2==strlen(lettersGuessed)-1)
{
availableLetters[LA]=alphabet[LG];
LA++;
}
}
}
}
这是调用函数的程序:
#include <stdio.h>
#include <string.h>
#include "hangman.c"
int main()
{
int i = 0;
char result[30];
char text[30];
scanf("%s", text);
while(i != strlen(text))
{
i++;
}
getAvailableLetters(text, result);
printf("%s\n", result);
printf ("%d", i);
printf ("\n");
}
这是我输入 abcd 时的结果:efghijklmnopqrstuvwxyzUw▒ˉ
【问题讨论】:
-
getAvailableLetters似乎有问题;很难说没有看到它的实现是什么(相关代码应该包含在帖子中,而不是链接到)。 (另外:while循环的意义何在?)最后:学习格式化您的代码的注释! -
我尝试正确格式化但失败了:/ 所以我使用了 pastebin。第一次使用本网站
-
是的,我知道 getAvailableLetters 有问题
-
也不要介意循环,它只是为了测试
-
不要像你一样在循环条件中使用
strlen();每次循环迭代时都会调用它,这会使您的算法爆炸。您在main()程序中确定i何时达到strlen(text)大小的循环很奇怪;你只需写i = strlen(text);(没有可见的循环)。
标签: c string function overflow