"isZero"함수를 사용하여 단어가 아나그램인지 아닌지를 감지하는 데 문제가 있습니다. "isZero"가 main()에서 1과 같으면 "anagram"만 제공합니다. 그리고 0으로 설정하면 그것은 "anagram"이 아닐뿐입니다. 나에게 그것은 아무 것도 계산하지 않고, 지금은 진술이 사실이라면 그냥 인쇄하고있다. 이 문제를 해결하는 방법을 모르고 일부 지침을 사용할 수 있습니다.Anagram 프로젝트
#include <stdio.h>
#include <ctype.h>
#define MAX 26
void intialize(char a[], char b[], int c[]);
void setLetters(char newCount[], int newNumber[]);
void checkLetters(char b[], int newNumber[]);
int isZero(int c[]);
void getstring(char a[]);
void getString(char b[]);
int main(void)
{
char a[MAX], b[MAX];
int c[MAX];
intialize(a, b, c);
getstring(a);
getString(b);
setLetters(a, c);
checkLetters(b, c);
if (isZero(c) == 1) {
printf("anagram");
} else
printf("not anagram");
return 0;
}
void intialize(char a[], char b[], int c[])
{
int i;
for(i = 0; i < MAX; ++i) {
a[i] = '\0';
b[i] = '\0';
c[i] = 0;
}
}
void setLetters(char newCount[], int newNumber[])
{
int i, index = 0;
for(i = 0; i < MAX; ++i) {
if(isalpha(newCount[i])) {
newCount[i] = tolower(newCount[i]);
index = (int)(newCount[i] - 'a');
newNumber[index] +=1;
}
}
}
void checkLetters(char b[], int newNumber[])
{
int i, index;
for(i = 0; i < MAX; ++i) {
if(isalpha(newNumber[i])) {
newNumber[i] = tolower(newNumber[i]);
index = (int)(newNumber[i] - 'a');
newNumber[index] -= 1;
}
}
}
int isZero(int c[])
{
int i, j = 0;
for(i = 0; i < MAX; ++i) {
if(c[i] == 0)
j = 1;
else
return 0;
}
return j;
}
void getstring(char a[])
{
char line[MAX];
printf("Enter a string: ");
gets(line);
}
void getString(char b[])
{
char line[MAX];
printf("Enter a string: ");
gets(line);
}
'initialize', 당신은 당신이 단순히 [MAX] = {0} 숯불'선언 할 수 있습니다 알고 {='와'INT의 C [MAX]를 0};'('b'와 동일). 또한 ** 절대로 절대로 사용하지 마십시오. C 라이브러리의 일부 **는 불안정하기 때문에 더 이상 사용되지 않습니다. 'fgets','getline' 또는'scanf'를 사용하십시오. –