gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:30:06 24 4
gpt4 key购买 nike

我试图将这个小代码拆分成函数,但是我遇到了麻烦,代码应该显示单词是否是字谜。如果我将所有内容都放入 main 中,它会完美运行,但现在我已将其放入函数中,它表明所有单词都不是字谜。

我认为问题出在 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;
}

最佳答案

char *first = &first[20];

现在first指向数组的last+1元素,这不是你想要修复的。数组 first 的有效索引为 0 - 19

getWords(first, second, alphabet);

关于c - 将代码拆分为函数后,它无法正常工作。 C语言编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com