неопределенная ссылка на gotoxy в C

Я пытаюсь написать программу на языке C (code :: blocks в windowsх). Я добавил ниже заголовочных файлов, он компилируется без ошибок, но когда дело доходит до запуска кода, он выдает сообщение об ошибке undefined to gotoxy. Найдите полный код. Ошибка возникает, когда у меня есть gotoxy-заявления.

# include # include # include # include # include #include struct node { int data; struct node *link; }; void append(struct node **,int); void in_begin(struct node **,int); void del(struct node **,int); void in_middle(struct node **,int,int); int count(struct node *); void display(struct node *); char ans; int main() { struct node *p; /* p can be said as the head or a start ptr */ p=NULL; /* Printing the menu */ int num,loc; char choice; do { //clrscr(); printf("PROGRAM TO IMPLEMENT SINGLY LINKED LIST "); printf("\n====================================="); printf("\n\n1.Create \\ Appending The List"); printf("\n2.Insert Node At Begining"); printf("\n3.Insert Node In Middle"); printf("\n4.Deleting a Node"); printf("\n5.Counting The No Of Nodes"); printf("\n6.Displaying the list"); printf("\n7.Exit"); oper: gotoxy(1,15);printf(" "); gotoxy(1,11);printf("\n\nEnter ur Choice : "); choice=getch(); switch(choice) { case '1': // char ans; do { printf("Enter any number : "); scanf("%d",&num); append(&p,num); printf("Enter more (y/n) :"); fflush(stdin); ans=getchar(); }while(ans !='n'); break; case '2': printf("Enter The Data : "); scanf("%d",&num); in_begin(&p,num); break; case '3': printf("\nEnter The Position :"); scanf("%d",&loc); printf("\nEnter The Data : "); scanf("%d",&num); in_middle(&p,loc,num); break; case '4': printf("\nEnter The Data u Want To Delete : "); scanf("%d",&num); del(&p,num); break; case '5': printf("\nThe No Of Nodes Are %d",count(p)); getch(); break; case '6': display(p); getch(); break; case '7': printf("\n\nQuiting......."); getch(); exit(0); break; default: gotoxy(1,15);printf("Invalid choice.Please Enter Correct Choice"); getch(); goto oper; } }while(choice !=7); return 0; } void append(struct node **q,int num) { struct node *temp,*r; temp = *q; if(*q==NULL) { temp = (struct node *)malloc(sizeof(struct node)); temp->data=num; temp->link=NULL; *q=temp; } else { temp = *q; while(temp->link !=NULL) { temp=temp->link; } r = (struct node *)malloc(sizeof(struct node)); r->data=num; r->link=NULL; temp->link=r; } } void display(struct node *q) { if(q==NULL) { printf("\n\nEmpty Link List.Can't Display The Data"); getch(); goto last; } while(q!=NULL) { printf("\n%d",q->data); q=q->link; } last: ; } int count(struct node *q) { int c=0; if(q==NULL) { printf("Empty Link List.\n"); getch(); goto last; } while(q!=NULL) { c++; q=q->link; } last: return c; } void in_begin(struct node **q,int num) { struct node *temp; if(*q==NULL) { printf("Link List Is Empty.Can't Insert."); getch(); goto last; } else { temp=(struct node *)malloc(sizeof(struct node)); temp->data=num; temp->link=*q; *q=temp; /* pointing to the first node */ } last: getch(); } void in_middle(struct node **q,int loc,int num) { struct node *temp,*n; int c=1,flag=0; temp=*q; if(*q==NULL) { printf("\n\nLink List Is Empty.Can't Insert."); getch(); goto last; } else while(temp!=NULL) { if(c==loc) { n = (struct node *)malloc(sizeof(struct node)); n->data=num; n->link=temp->link; temp->link=n; flag=1; } c++; temp=temp->link; } if(flag==0) { printf("\n\nNode Specified Doesn't Exist.Cant Enter The Data"); getch(); } else { printf("Data Inserted"); getch(); } last: getch(); } void del(struct node**q,int num) { if(*q==NULL) { printf("\n\nEmpty Linked List.Cant Delete The Data."); getch(); goto last; } else { struct node *old,*temp; int flag=0; temp=*q; while(temp!=NULL) { if(temp->data==num) { if(temp==*q) /* First Node case */ *q=temp->link; /* shifted the header node */ else old->link=temp->link; free(temp); flag=1; } else { old=temp; temp=temp->link; } } if(flag==0) printf("\nData Not Found..."); else printf("\nData Deleted...Tap a key to continue"); getch(); } last: getch(); } 

Пожалуйста, помогите мне.

    Проблема, с которой вы сталкиваетесь, не связана с Code::Blocks , она связана с используемым ею компилятором (по умолчанию MinGW), и это связано с тем, что эта функция не является стандартной и не реализована в этом компиляторе. Я не уверен, что Borland по-прежнему предоставляет conio.h , но вы можете попробовать это для MinGW .

    Посмотрите на это http://projectsofashok.blogspot.in/2010/05/gotoxy-in-codeblocks.html

    Вы также можете попробовать приведенный ниже fragment, это будет работать в GCC

     #include //gotoxy function void gotoxy(int x,int y) { printf("%c[%d;%df",0x1B,y,x); } main () { gotoxy(25,50); //reposition cursor printf("hello world"); //display text } 

    Вы также можете посмотреть NCURSES .

    Для чего это стоит, вот некоторые версии Windows старых функций Borland, которые я написал, возможно, десять лет назад.

     /* console_functions.h */ #ifndef __WINAPI_CONSOLE_WRAPPER_H #define __WINAPI_CONSOLE_WRAPPER_H void init_console_functions (void); void gotoxy (int x, int y); void clrscr (void); char getch (void); #endif /* __WINAPI_CONSOLE_WRAPPER_H */ /* console_functions.c */ #include "ConsoleFunctions.h" #include  static HANDLE hStdout; static HANDLE hStdin; static CONSOLE_SCREEN_BUFFER_INFO csbi; static const COORD startCoords = {0,0}; void init_console_functions (void) { hStdout = GetStdHandle(STD_OUTPUT_HANDLE); hStdin = GetStdHandle(STD_INPUT_HANDLE); GetConsoleScreenBufferInfo(hStdout, &csbi); } void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(hStdout,coord); } void clrscr(void) { DWORD dummy; FillConsoleOutputCharacter(hStdout, ' ', csbi.dwSize.X * csbi.dwSize.Y, startCoords, &dummy); gotoxy(0,0); } char getch(void) { INPUT_RECORD inp_rec; DWORD bytes_read; BOOL success; do { success = PeekConsoleInput(hStdin, &inp_rec, 1, &bytes_read); FlushConsoleInputBuffer(hStdin); } while(!success || inp_rec.EventType != KEY_EVENT || bytes_read==0); return (char)inp_rec.Event.KeyEvent.uChar.AsciiChar; } 

    Code :: Blocks (MinGW) не имеет файла заголовка conio.h. Таким образом, вы не можете использовать gotoxy()

      #include #include main() { gotoxy(10, 10); printf("C program to change cursor position."); getch(); return 0; } 

    это отлично работает на C., но не в блоках кода. Проблема, с которой вы сталкиваетесь, не связана с Code :: Blocks, она связана с используемым ею компилятором (по умолчанию MinGW), и это связано с тем, что эта функция не является стандартной и не реализована в этом компиляторе. попробуйте использовать:

     SetConsoleCursorPosition(hConsole, TL); HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); 

    или использовать Borland C, который поддерживает conio.h. Для получения этого посетите LINK

     # include # include // you cant use conio.h # include # include # include 

    В C 1 есть две вещи для таких вопросов: 1) у вас должен быть правильный заголовок с надлежащим прототипом (это i conio.h) 2) у вас должна быть соответствующая библиотека для ссылки в этом случае, вероятно, что-то вроде libconio .lib

    Затем вам нужно включить правильный заголовок, и вы должны сообщить компоновщику, с которым вы хотите связать библиотеки.

    Команды ссылок в gcc, например, являются -L и -l, и оба необходимы для использования conio.

    См. Также: g ++ conio.h: нет такого файла или каталога

    С уважением

    это ошибка, потому что есть что-то отсутствует, которое может обрабатывать gotoxy попробовать этот код

     int gotoxy(int x,int y) { COORD coord = {x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } 
    Давайте будем гением компьютера.