2014-03-02 56 views
1

我正在使用Code :: Blocks和事情是我曾多次嘗試解決Conio庫和其他一些庫的問題。每次我使用clrscr();textcolor();之類的東西時,Conio.h不工作在codeblocks(未定義的參考..)

Undefined reference to textcolor. 

例如,這個簡單的程序是應該表現出特定的顏色的總和,但它不工作了,雖然我已經看到它之前工作。

#include <stdio.h> 
#include <conio.h> 
int fx(int x,int y,int z) 
{ 
    return x+y+z; 
} 
int main() 
{ 
    int a,b,c; 
printf("Enter three values to a, b and c.\n"); 
scanf("%d%d%d",&a,&b,&c); 
int total=fx(a,b,c); 
textcolor(14); 
printf("Output ="); cprintf(" %d",&total); 
getch(); 
return 0; 
} 

P.S .:我正在使用GNU GCC。有時當我選擇另一個編譯器或者只是打開Code :: Blocks時,會說「有些插件丟失了」,或者類似的東西。 任何人都可以幫忙嗎?

+0

這些都是古老的Borland CRT功能,可追溯到DOS日子。它們從未成爲任何標準CRT實施的一部分。 –

+0

僅供參考:conio.h也支持MS,但不支持textcolor。如果你想用MS使用顏色,請看看wincon.h例程(來自kernel32.lib) – cup

回答

1

conio.h不支持gcc。

+0

我以前見過它!必須是另一個編譯器? – OsomePersan

+0

@ user3185410 Turbo C/C++支持它。 –

+6

「conio.h是一個C頭文件,主要由MS-DOS編譯器提供控制檯輸入/輸出,它不是C標準庫的一部分,ISO C也不是由POSIX定義的。」 –

0

conio.h不支持gccHereconio.h的執行gcc雖然。

0

conio.h在gcc中不受支持。您可以嘗試curses庫,該庫支持創建text-user interface。 有許多詛咒的味道,你可以使用代碼塊的ncursespdcurses庫。

0

原始Borland conio.h中的一些函數很容易重複 - 我最近從Turbo-C程序(從1990年!)移植到gcc,並發現了getch和getche版本(用於Linux ),我可以在線使用(但不是使用gcc命令編譯的C++版本)。我編寫了我自己的cgets版本,但還沒有發現需要從該頭文件創建我自己的其他函數版本。

char getch() 
{ 
    char c; // This function should return the keystroke without allowing it to echo on screen 

    system("stty raw"); // Raw input - wait for only a single keystroke 
    system("stty -echo"); // Echo off 
    c = getchar(); 
    system("stty cooked"); // Cooked input - reset 
    system("stty echo"); // Echo on - Reset 
    return c; 
} 

char getche() 
{ 
    char c; // This function should return the keystroke, with echo to screen 

    system ("stty raw");  // Raw input - wait for only a single keystroke 
    c = getchar(); 
    system ("stty cooked"); // Cooked input - reset 
    return c; 
} 

char *cgets(char *buf) 

/* gets a string from console and stores it in *buf; buf[0] must be initialized to maximum string size and *buf must 
be declared by caller to maximum string size plus 3 bytes, to accommodate string, terminating null, size byte in buf[0] 
and length of entered string in buf[1]; sets buf[1] to length of string entered and returns pointer to buf[2] */ 

{ 

    /* declare and initialize internal variables */ 

    unsigned int count = 2; /* start at 2 because [0] is max size including terminator and [1] returns actual */ 
       /* entry size, also including terminating null */ 
    char input = '\0';  /* initialize to null */ 

/* start actual function */ 

    while (count < buf[0] + 2) /* while within permitted string length -- +2 for size control bytes */ 
    { 
    input=getch();  /* get a single character, without echo */ 
    if (input != (char) 13) /* not cr/enter key -- presumed meaningful input */ 
    { 
     printf("%c",input); 
     buf[count++] = input; /* store character and increment counter */ 
    } 
     else 
     { 
    buf[count] = '\0'; /* change cr/enter key to terminating null */ 
    buf[1]=(char) count - 2;/* store length of entered string (including terminating null) */ 
    count = buf[0] + 2; /* terminate entry loop -- +2 for size control again */ 
     } 

    } 

    return &buf[2];  /* return pointer to start of string */ 
} 

要記住的關鍵是包含的文件(如conio.h)不必預編譯;如果它只是更多的C源代碼,它可以是一樣的功能。