それぞれのcharとその数を取得してリンクリストに入れようとしています。タイトルには、互換性のないポインタ型についての警告と、不完全な型の逆参照に関するエラーが出ています。私は最後に言ったのは開始がヌルだからだと思うけど、なぜ私はそれを一時的なものに割り当てたのか分からない。助けてください。互換性のないポインタ型と不完全な型への逆引きポインタからの割り当て
/* Author: Miller Kahihu
Date: 2017-02-01
Program getChars.c
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct linkedList
{
struct Element* start;
int size;
} LinkedList;
typedef struct element
{
char key;
int value;
struct Element* next;
} Element;
int main(int argc, char** argv)
{
LinkedList* list = malloc(sizeof(LinkedList));
list->start = NULL;
list->size = 0;
char* fileName = NULL;
if(argc > 1)
{
fileName = argv[1];
}
else
{
exit(1);
}
FILE* fpIn = fopen(fileName, "r");
if(!fpIn)
{
fprintf(stderr, "file %s could not be opened\n", fileName);
exit(1);
}
int c;
Element* temp = (Element*) malloc(sizeof(Element));
while((c=fgetc(fpIn)) !=EOF)
{
if(list->start == NULL)
{
temp->key = (char) c;
temp->value = 1;
temp->next = NULL;
list->start = temp;
printf("%c kappa\n", list->start->key);
}
else
{
printf("%c\n", (char) c);
}
}
//free(temp);
return 0;
}
は、ここで問題がstruct Element
のようなものではありません完全なエラーメッセージ
getChars.c: In function ‘main’:
getChars.c:51:25: warning: assignment from incompatible pointer type [enabled by default]
list->start = temp;
^
getChars.c:52:45: error: dereferencing pointer to incomplete type
printf("%c kappa\n", list->start->key);
^
「Element」という寄生虫のfwdがあるようです。そして、あなたは、リンクリストの前にElement構造体を宣言する必要があります。 –