[Linker error] undefined reference - C (СИ)

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

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

Будте добры помогите решить проблему с ошибками: [Linker error] undefined reference to `Vivod(char*, char*)' [Linker error] undefined reference to `Osnova(void (*)(int, int, char*, char*), void (*)(char*, char*))' ld returned 1 exit status
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
#define N 100
#define Z 10
#define L 100
 
void Virezanie(int ,int ,char*,char*);
void Osnova(void(int ,int ,char*,char*),void(char*,char*));
void Vivod(char*,char*);
 
int 
main(void)
{
 
    Osnova(Virezanie,Vivod);
 
    getch();
    return(0);  
}
 
void 
Virezanie(int a,int b,char strn[],char st[])
{
 int i;
 for (i=a;i<b+a;i++)
 st[i-a]=strn[i-1];
 for (i=0;i<(Z-1);i++)
 {
    if(st[i]==' '){
    st[i]='\0';
    i=Z-1;}
 }
}
 
void
vivod(char print[],char t[])
{
      if(strcmp(print,t) != 0 ){                      
             strncpy(t,print,Z);
             printf("%s\n",print);
             }
}
void
osnova(void Virezanie(int a,int b,char strn[],char st[] ),void vivod(char print[],char t[]))
{       
FILE *inp;
char string[L];/*строка которую считывает программа из файла*/
char temp[Z];/*temp */
char strana_user[Z];/*страна пользователя*/
char gorod_user[Z];/*город   ----//----*/
char hotel_user[Z];/*отель п-ля*/
char number_user[Z];/*отель п-ля*/
char pay_user[Z];/*отель п-ля*/
char tempS[Z];/*temp для strana_user*/
char tempG[Z];/*temp для gorod_user*/
char tempH[Z];/*temp для hotel_user*/
char tempN[Z];/*temp для number_user*/
char tempP[Z];/*temp для pay_user*/
char strana[Z];/*страна из файла*/
char gorod[Z];/*город который вырезает*/
char hotel[Z];/*отель который вырезает*/
char number[Z];/*номер номера который вырезает*/
char pay[Z];/*цену который вырезает*/
int i,p,n/*c какого символа вырезать*/,k/*по какой*/,b;

inp = fopen("test.txt","r");
 
while(fgets(string, L, inp) != NULL){
 fgets(string,L,inp);   
 n=1;k=10;           
 Virezanie(n,k,string,strana);
 vivod(strana,temp);/*Выводит страны*/
}
printf("VVeditete stranu>");
gets(strana_user);
 
fseek(inp,0L,SEEK_SET);
    
while(fgets(string, L, inp) != NULL){
 n=1;k=10;                                   
 fgets(string,L,inp);   
 Virezanie(n,k,string,strana);
 strcpy(tempS,strana_user);       
 if(strcmp(tempS,strana) == 0){
    n=11;k=20;                                                            
    Virezanie(n,k,string,gorod);    
    vivod(gorod,temp); /*выводит город*/
 }
}

printf("VVeditete gorod>");
gets(gorod_user);
fseek(inp,0L,SEEK_SET);
         
while(fgets(string, L, inp) != NULL){
 fgets(string,L,inp);   
 n=1;k=10;
 Virezanie(n,k,string,strana);
 strcpy(tempS,strana_user);  
 if(strcmp(tempS,strana) == 0){     
    n=11;k=20;                                                                        
    Virezanie(n,k,string,gorod);          
    strcpy(tempG,gorod_user);
    if(strcmp(tempG,gorod) == 0){
        n=21;k=30;                                                                                                    
        Virezanie(n,k,string,hotel);
        vivod(strana,hotel);/*выводит отель*/
    }               
 }
}
printf("VVeditete hotel>");
gets(hotel_user);
fseek(inp,0L,SEEK_SET);
         
while(fgets(string, L, inp) != NULL){
 fgets(string,L,inp);   
 n=1;k=10;
 Virezanie(n,k,string,strana);
 strcpy(tempS,strana_user);  
 if(strcmp(tempS,strana) == 0){                                                           
    n=11;k=20;                                                            
    Virezanie(n,k,string,gorod);      
    strcpy(tempG,gorod_user);
    if(strcmp(tempG,gorod) == 0){                                         
        n=21;k=30;                                                                                                    
        Virezanie(n,k,string,hotel);
        strcpy(tempH,hotel_user);   
        if(strcmp(tempH,hotel) == 0 ){
            n=31;k=33;                                                                                                    
            Virezanie(n,k,string,number);
            vivod(strana,number);/*выводит номер*/
        }               
    }
             
 }
}
             
printf("VVeditete nomer>");
gets(number_user);
fseek(inp,0L,SEEK_SET);
         
while(fgets(string, L, inp) != NULL){
 fgets(string,L,inp);   
 n=1;k=10;
 Virezanie(n,k,string,strana);
 strcpy(tempS,strana_user);  
 if(strcmp(tempS,strana) == 0){                                                           
     n=11;k=20;                                                                                                   
     Virezanie(n,k,string,gorod);                 
     strcpy(tempG,gorod_user);
     if(strcmp(tempG,gorod) == 0){                                        
         n=21;k=30;                                                                                                   
         Virezanie(n,k,string,hotel);
         strcpy(tempH,hotel_user);  
         if(strcmp(tempH,hotel) == 0 ){
             n=31;k=33;                                                                                                   
             Virezanie(n,k,string,number);
             strcpy(tempN,number_user);     
             if(strcmp(tempN,number) == 0 ){
                 n=34;k=43;                                                                                                   
                 Virezanie(n,k,string,pay);
                 vivod(strana,pay);/*выводит цену за номер*/
                    
             }
         }
     }
 }
}
fclose(inp);
}
Премного благодарен.

Решение задачи: «[Linker error] undefined reference»

textual
Листинг программы
void
vivod(char print[],char t[])
...
void
osnova(...)

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


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

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

14   голосов , оценка 3.929 из 5