ImはC言語には新しく、このコードに問題があります。私は書いています。私はほぼ100%確信しているので、私の配列のセクションを比較するが、私は本当に何を変更するか分からない。誰も助けることができますか?私のコード全体が必要な場合は、私もそれを投稿することができます。 コードは、ユーザーが入力した文字と.txtドキュメントの単語を比較し、それらの文字で任意の単語をスペルできるかどうかを確認する必要があります。この配列を手伝ってくれる人がいますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 99
#define NUM_WORDS 100
void find_frequency(char string[], int count[]);
int compare_arrays(int dictionary[], int user[]);
int main()
{
int total_words=11; //number of words
char dictionary_words[NUM_WORDS][SIZE]; //store words in directory
FILE *cfPtr; //dictionary.txt pointer
if ((cfPtr=fopen("dictionary.txt","r"))==NULL)//try to open file
{
puts("File dictionary.txt could not be opened.");
exit(1);//exit if file doesn't open
}
else{ //Read each word from the dictionary and save to array
char line[SIZE]; //save each word
{
while(fgets(line,SIZE,cfPtr)!= NULL)
{
char*tokenPtr=strtok(line, "\t");
while(tokenPtr != NULL)
{
strcpy(dictionary_words[total_words],tokenPtr);
total_words++;
tokenPtr = strtok(NULL, "\t");
}
}
}
}
fclose(cfPtr);//close file
char string[11];//get string of characters from user
int count[26]={0};//store the number of each letter
printf("Enter letters:\n");
scanf("%s", string);
find_frequency(string, count);//count of each character entered
char temp[SIZE];
int temp_count[26]={0};//convert words into letters
int i;
for(i=0; i<=total_words; i++);
{
strcpy(temp,dictionary_words[i]);
find_frequency(temp,temp_count);//convert word to letters in alphabet
if (compare_arrays(temp_count,count))//compare words with letters entered
{
printf("%s:", temp);//print what you can spell
}
else
{
printf("broken", temp);
}
memset(temp_count,0,sizeof(temp_count));//test next word
}
return(0);
}//end main
//define function
void find_frequency(char string[],int count[])
{
int i;
for(i=0; string[i] != '\0'; i++)
{
if (string[i] >= 'a' && string[i] <= 'z')
{
count[string[i]-'a']++;
}
}
}
int compare_arrays(int dictionary[], int user[])
{
int j = 0;
while (user[j] >= dictionary[j])
{
j++;
if (j == 26)
{
return 0;
}
else
{
printf("also broken");
}
}
return 1;
}
私たちはあなたの心を読んで、コードが何をすべきかを理解することはできません。説明を追加してください。 – unwind
これはループ( 'while')と条件(' if')が必要なように見えますが、ここでは2つの条件があります。そうでなければ、 'j'が26になるのをどのように期待しますか? –
@chrisjnどのように配列を比較したいですか?それらが等しいか、最初のものが2番目のものよりも小さくないかどうかチェックしますか? –