[解決済み] error: struct has no member named X
2022-01-26 17:52:26
質問
#include <stdio.h>
#include <stdlib.h>
struct treeNode
{
*char word;
int NumberCnt;
struct treeNode *rightPTR, *leftPTR;
};
typedef struct treeNode node;
node *rootPTR = NULL;
void freeTree(node *currPTR)
{
if (currPTR!= NULL)
{
freeTree(currPTR -> leftPTR);
free(currPTR);
freeTree(currPTR -> rightPTR);
}
}
void printTree(node *currPTR)
{
if (currPTR != NULL)
{
printTree(currPTR ->leftPTR);
printf("%d\n", currPTR->word);
printTree(currPTR ->rightPTR);
}
}
int insertNode (char* input)
{
node *tempPTR = malloc(sizeof(node));
tempPTR -> word = input;
tempPTR -> NumberCnt=0;
tempPTR -> leftPTR = NULL;
tempPTR -> rightPTR = NULL;
if (rootPTR == NULL)
{
rootPTR = tempPTR;
rootPTR -> NumberCnt++;
}
else
{
int comp;
node *currPTR = rootPTR;
node *prevPTR = NULL;
while (currPTR != NULL)
{
comp = strcmp(input, (currPTR->word));
if (comp = 0)
{
printf ("Entry already exists");
return 1;
}
else if (comp < 0)
{
prevPTR = currPTR;
currPTR = currPTR->leftPTR;
}
else if (comp > 0)
{
prevPTR = currPTR;
currPTR = currPTR->rightPTR;
}
}
comp = strcmp(input, (prevPTR ->word));
if (comp < 0)
{
prevPTR->leftPTR = tempPTR;
}
else if (comp > 0)
{
prevPTR->rightPTR = tempPTR;
}
return 0;
}
return 2;
}
int search(char* input)
{
if (input == rootPTR ->data)
{
printf("Node found %d\n", rootPTR->data);
return 0;
}
else
{
if (input < rootPTR ->data)
{
node *currPTR = rootPTR->leftPTR;
while (currPTR != NULL)
{
if (input == currPTR->data)
{
printf("Node found %d\n", currPTR->data);
return 0;
}
else if (input < currPTR->data)
{
currPTR = (currPTR -> leftPTR);
}
else if (input > currPTR->data)
{
currPTR = (currPTR -> rightPTR);
}
}
printf ("Node not in tree\n");
return 1;
}
if (input > rootPTR ->data)
{
node *currPTR = rootPTR->rightPTR;
while (currPTR != NULL)
{
if (input == currPTR->data)
{
printf ("Node found %d\n", currPTR->data);
return 0;
}
else if (input < currPTR->data)
{
currPTR = (currPTR -> leftPTR);
}
else if (input > currPTR->data)
{
currPTR = (currPTR ->rightPTR);
}
}
printf ("Node not in tree\n");
return 1;
}
}
return 2;
}
void fixWord(char* buff)
{
char* unfixed = buff;
char* fixed = buff;
while (*unfixed)
{
if (isalpha(*unfixed))
{
*fixed=tolower(*unfixed);
*fixed++;
}
*unfixed++;
}
*fixed=0;
}
int main()
{
FILE *ptr_file;
char buff [100];
//ptr_file = fopen ("sherlock.txt", "r");
ptr_file = fopen ("input.txt", "r");
if (!ptr_file)
printf("File read error");
while(fscanf(ptr_file, "%s ", buff ) != EOF)
{
int comparison = strcmp(buff, "endoffile");
if (comparison == 0)
{
return 0;
}
fixWord(buff);
insert(buff);
}
fclose(ptr_file);
}
このコードは、ファイルからテキストを読み込み、それをバイナリツリーに追加するものです。新しいノードを表す構造体には、文字列と、ワード数を示す整数を取り込みます。しかし、文字列と増分された整数を受け取るように構造体を更新して以来、コンパイラから構造体のメンバが含まれていないとの苦情が寄せられるようになりました。なぜこのようなことが起こるのか、まったくわかりません。
どうすればいいですか?
をご覧ください。
まず
のエラーメッセージが表示されます。このエラーメッセージは
*char
であるべきですが、6行目では
char *
.
ちなみに、エラーメッセージは必ずコピー&ペーストして、元のメッセージを入手するようにしてください。
関連
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] C++の'struct'と'typedef struct'の違い?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] 構造体のsizeofは、なぜ各メンバーのsizeofの合計と等しくないのですか?
-
[解決済み] 構造体変数をコンソールに表示するには?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。