2016-04-13 10 views
-1

Я недавно создал эту программу, которая отображает последнюю букву строки. Используя этот код:Как сделать последнее письмо мигающим?

#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(); 
} 

Если я использую textattribute или textcolor+128 и изменить cout к cprintf(lastchar) я получаю ошибку, которая говорит:

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

Прежде всего, вы должны исправить * неопределенное поведение * у вас есть при печати из в * неопределенный символ *. Вы получаете «длину» атрибута «текст» и присваиваете 'lastchar' * before *, вы инициализируете массив, когда его содержимое * неопределенно *. –

+1

Что касается вашей ошибки, что, по вашему мнению, произойдет, когда вы передадите один символ «char» функции, ожидающей строку (т. Е. Указатель на «char», то есть 'char *'). И не просто используйте адрес-оператора, чтобы получить указатель на 'lastchar', который также * приведет к неопределенному поведению. –

+0

И, наконец, не используйте 'gets'. Никогда не используйте его. Он не только удалился со стандартного C++ 14, но и * опасен *. Используйте ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) и [' std :: getline'] (http://en.cppreference.com/w/ cpp/string/basic_string/getline). –

ответ

0

Это то, что вы ищете:

//--------------------------------------------------------------------------- 
#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; 
    } 
//--------------------------------------------------------------------------- 

цветы установлены с:

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

Мигание не работает на моей консоли (Win7), поэтому если у вас есть та же проблема, что вам нужно, чтобы оживить Ваш сам попробовать это:

//--------------------------------------------------------------------------- 
#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

Вы можете использовать TextColor(); 128 код мигания код в 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();  } 

для дополнительной помощи правой кнопкой мыши на окне и типа TurboC++ TextColor();

enter image description here

Смежные вопросы