Я пишу программу, которая подсчитывает количество раз, когда слово происходит в текстовом файле. Это делается с помощью структуры, содержащей слово и счетчик этого слова. Я получаю компиляции я получаю сообщение об ошибке, что читает:Недопустимое применение sizeof для завершения struct wordcounter
"Invalid application of sizeof to incomplete type struct wordcounter."
Любой вход на том, как исправить эту проблему и о моем коде вообще ценится. Я новичок в c, поэтому я открыт для консультаций, не связанных с этим вопросом. Большое спасибо. Мой код:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define MAXWORDS 5000
#define MAXLINE 1000
#define MAXWORDLEN 100
int count = 0;
struct wordcount *wordPtr[MAXWORDS];
typedef struct wordcount *wordcountptr;
typedef struct wordcount {
char word[50];
int count;
} wordcount;
main()
{
int wordfound = 0;
int len;
char line[MAXLINE];
int printcount;
while ((len = getline(line, MAXLINE, stdin))> 0)
{
int i = 0;
int j = 0;
for(; i<len; i++)
{
if(line[i] != isalnum(line[i]) && line[i] != 32)
line[i] = 32;
else
line[i] = tolower(line[i]);
}
for(; j<len; j++)
{
char currentword[MAXWORDLEN];
if(line[j] != 32)
{
for(i=0; line[j] != 32; i++)
currentword[i] = line[j];
}
if(line[j] == 32)
{
for(i=0;i<MAXWORDS; i++)
{
if(strcmp(currentword, (*wordPtr[i]).word) == 0)
{
(*wordPtr[i]).count++;
wordfound = 1;
}
}
if(wordfound == 0)
{
wordPtr[i] = (struct wordcounter*)malloc(sizeof(struct wordcounter));
strcpy((*wordPtr[i]).word, currentword);
(*wordPtr[i]).count = 1;
count++;
}
}
wordfound = 0;
}
}
for(printcount = 0; printcount < count; printcount++)
printf("There are %d occurances of the word %s\n", (*wordPtr[printcount]).count, (*wordPtr[printcount]).word);
for(printcount = 0; printcount < MAXWORDS; printcount++)
{
free((void*)wordPtr[printcount]);
wordPtr[printcount]= NULL;
}
}
'wordcount' =' wordcounter'. Проверьте имя объявления и имя, которое вы использовали в коде. Там более одного, кстати. – WhozCraig
Я реализую getline неправильно? Я получаю предупреждение о моих аргументах. Также теперь я получаю ошибку времени выполнения: ошибка сегментации (сбрасывание ядра). – Atache