2016-04-13 8 views
-1

Ich hatte vor kurzem dieses Programm erstellt, das den letzten Buchstaben einer Zeichenfolge anzeigt. Mit diesem Code:Wie lässt sich der letzte Buchstabe blinken?

#include<conio.h> 
#include<string.h> 
#include<stdio.h> 

void main() 
{ 
     clrscr(); 
     char text[255]; 
     int length= strlen(text); 
     char lastchar=text[length-1]; 

     gets(text); 
     cout<<lastchar; 

     getch(); 
} 

Wenn ich textattribute oder textcolor+128 verwenden und cout zu cprintf(lastchar) ändern erhalte ich einen Fehler, der sagt:

cannot convert int to const* char" and "type mismatch in parameter '___format' in call to 'cprintf(const char*,....)' 
+1

allererst Sie die * nicht definiertes Verhalten beheben müssen * Sie haben, wenn ein * unbestimmtes Ausdruck von Zeichen *. Sie erhalten die "Länge" des arrat 'text' und ordnen sie' lastchar' * zu, bevor * Sie das Array initialisieren, wenn sein Inhalt * unbestimmt * ist. –

+1

Was ist Ihrer Meinung nach passiert, wenn Sie ein einzelnes Zeichen an eine Funktion übergeben haben, die eine Zeichenfolge erwartet (d. H. Einen Zeiger auf ein Zeichen, also ein Zeichen)? Und benutzen Sie nicht den Address-of-Operator, um einen Zeiger auf 'lastchar' zu bekommen, der * auch * zu einem undefinierten Verhalten führt. –

+0

Schließlich, verwenden Sie nicht "gets". Benutze es niemals. Es wurde nicht nur seit dem C++ 14-Standard entfernt, es ist auch * gefährlich *. Verwenden Sie ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) und [' std :: getline'] (http://en.cppreference.com/w/ cpp/string/basic_string/getline) statt. –

Antwort

0

Dies ist, was Sie suchen:

//--------------------------------------------------------------------------- 
#include<conio.h> 
//--------------------------------------------------------------------------- 
#pragma argsused 
int main(int argc, char* argv[]) 
    { 
    for (int i=32;i<256;i++) 
     { 
     textcolor(i); 
     cprintf("%c",i); 
     } 

    getch(); 
    return 0; 
    } 
//--------------------------------------------------------------------------- 

Die Farben sind eingestellt mit:

textattr(full_attribute); 
textcolor(font_color); 
textbackground(background_color); 

Das Blinken nicht auf meiner Konsole (Win7) funktioniert so, wenn Sie das gleiche Problem Sie Ihre Selbst diese animieren müssen bekommen versuchen: Verwenden Sie Textfarbe

//--------------------------------------------------------------------------- 
#include<conio.h> 
#include<dos.h> 
//--------------------------------------------------------------------------- 
#pragma argsused 
int main(int argc, char* argv[]) 
    { 
    char *txt="text\0"; 

    _setcursortype(0); // hide cursor 
    for (;;) 
     { 
     gotoxy(1,1); // print position 
     textattr(7); // white on black 
     cprintf("%s",txt); 
     sleep(1);  // wait 1 sec 
     gotoxy(1,1); // print position 
     textattr(0); // black on black 
     cprintf("%s",txt); 
     sleep(1); 
     if (kbhit()) { getch(); break; } // stop on any key hit 
     } 
    // restore console properties 
    textattr(7); 
    _setcursortype(1); 
    return 0; 
    } 
//--------------------------------------------------------------------------- 
0

Sie können(); 128 Code ist Blinkcode in TURBOC++

#include<conio.h> 
#include<stdio.h> 
int main(){ 
     clrscr(); 
     textcolor(128+6); // or textcolor(134) [128:blinking and 6:brown color] 
     cprintf("My name is Prashant"); 
     getch();  } 

für Recht mehr Hilfe auf TURBOC klicken ++ Fenster und geben Textfarbe();

enter image description here