将代码拆分为函数后,它无法正常工作。 C编程

时间:2015-01-12 14:24:26

标签: c function

我试图将这个小代码分成函数,但是我遇到了麻烦,代码应该显示这些单词是否为字谜。如果我把所有东西都放到主要部分,那就完美了,但是现在我把它吐成了函数,它表明所有的单词都不是字谜。

我认为问题出在getWords函数中,在它得到单词的循环中。你们可能会知道我搞砸了。提前致谢。 :)

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void getWords(char *first,char *second,int *alphabet)
{
    int i = 0, sum = 0;
    printf("Enter the first word: ");
    do
    {
    //I think the problem is somewhere under here
    first[i] = getchar();
    if(isalpha(first[i]))
    alphabet[toupper(first[i]) - 'A'] += 1 ;
    i++;

    }while(first[i - 1] != '\n');

printf("Enter the second word: ");
i = 0;
do
{
    //and here
    second[i] = getchar();

    if(isalpha(second[i]))
    {
        alphabet[toupper(second[i]) - 'A'] -= 1;
    }
    i++;

}while(second[i - 1] != '\n');

}


void checksForAnagrams(int sum, int alphabet[26])
{
    int i;

for(i = 0; i <= 26 - 1; i++)
    {
        sum += alphabet[i];
    }
    if (sum == 0)
        printf("Anagrams\n");
    if (sum != 0)
        printf("Not anagrams\n");
 }


int main()
{

    int alphabet[26] = {0}, sum = 0;
    char first[20], second[20];

    getWords(&first[20], &second[20], &alphabet[26]);
    checksForAnagrams(sum, &alphabet[26]);

return 0;
}

1 个答案:

答案 0 :(得分:0)

char *first = &first[20];

现在first指向数组的最后一个+ 1元素,而不是你要修复的那个元素。数组first的有效索引是0 - 19

getWords(first, second, alphabet);