Ошибка компиляции Undefined reference to - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Прохожу Структуры со ссылками на себя. В примере была указана программа бинарного дерева. При компиляции кода ошибка: Undefined reference to 'treeprint'. Вот код(он большой, но думаю вникать в него не обязательно):
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <malloc.h>
#define MAXWORD 100
 
struct tnode {
    char *word;
    int count;
    struct tnode *left;
    struct tnode *right;
};
 
struct tnode *addtree(struct tnode *p, char *w);
int getword (char *word, int lim);
void treeprint(struct tnode *p);
struct tnode *talloc(void);
char *strdup(char *s);
 
main()
{
    struct tnode *root;
    char word[MAXWORD];
 
    root = NULL;
    while (getword(word, MAXWORD) != EOF)
        if (isalpha(word[0]))
            root = addtree(root, word);
    
    treeprint(root);
}
 
int getword(char *word, int lim)
{
    int c;
    //void ungetch(int);
    char *w = word;
 
    while (isspace(c = getch()))
            ;
 
    if (c != EOF)
        *w++ = c;
    if (!isalpha(c)) {
        *w = '\0';
        return c;
    }
 
    for ( ; --lim > 0; w++)
        if (!isalnum(*w = getch())) {
            ungetch(*w);
            break;
        }
    *w = '\0';
 
    return word[0];
}
 
struct tnode *addtree(struct tnode *p, char *w)
{
    int cond;
 
    if (p == NULL) {
        p = talloc();
        p->word = strdup(w);
        p->count = 1;
        p->left = p->right = NULL;
    } else if ((cond = strcmp(w, p->word) == 0))
        p->count++; 
    else if (cond < 0)
        p->left = addtree(p->left, w);
    else
        p->right = addtree(p->right, w);
 
    return p;
}
 
void treeprint(struct tnode *p)
{
    if (p != NULL) {
        treeprint(p->left);
        printf("%.4d %s\n", p->count, p->word);
        treeprintf(p->right);
    }
}
 
struct tnode *talloc(void)
{
    return (struct tnode *) malloc(sizeof(struct tnode));
}
 
char *strdup(char *s) 
{
    char *p;
    p = (char *) malloc(strlen(s)+1); 
    if (p != NULL)
        strcpy(p, s);
 
    return p;
}

Решение задачи: «Ошибка компиляции Undefined reference to»

textual
Листинг программы
while (isspace(c = getch()))
            ;
 
    if (c != EOF)
        *w++ = c;
    if (!isalpha(c)) {
        *w = '\0';
        return c;
    }
 
    for ( ; --lim > 0; w++)
        if (!isalnum(*w = getch())) {
            ungetch(*w);
            break;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5