node *hashtable[26];, тогда всё могло бы быть примерно так://максимальная длина слова в словаре
#define SIZE 45
int hash_function (char* key);
//определяем структуру
typedef struct node
{
char *word1;
struct node *next;
} node;
//создаем хэш-таблицу, в которой будут хранится списки
node *hashtable[26];
int main()
{
char *text = "small";
FILE *fp = fopen(text, "r");
if (fp == NULL)
{
printf("Could not open %s.\n", text);
return 1;
}
char word[SIZE];
while(!feof(fp))
{
//считываем слово из словаря
fscanf(fp,"%s",word);
//определяем его место в массиве
int k=hash_function(word);
//добавляем слово
node * new = malloc (sizeof (node));
new->next=hashtable[k];
strcpy(new->word1, word);
hashtable[k] = new;
}
fclose(fp);
return 0;
}
int hash_function (char* key)
{
int hash = tolower (key [0]) - 'a';
return hash;
} #if (n < 3) n не является определённым символом препроцессора, поэтому препроцессор заменяет его на 0. 0 < 3 -- истина, блок кода компилируется.если я пребразую y в double числа будут нормальные, а не такие, как сейчас
x как float (%f), а он у вас double, double это %lf.
не sodo, а sudoers
romajke, не, неправильно. Ну т.е. синтаксис, конечно, станет правильным, но семантика -- нет.