c语言录入字符不按回车,c语言中按回车录入数据后不换行,能做到吗?解决方案...

当前位置:我的异常网» C++ » c语言中按回车录入数据后不换行,能做到吗?解决方案

c语言中按回车录入数据后不换行,能做到吗?解决方案

www.myexceptions.net  网友分享于:2013-06-06  浏览:81次

c语言中按回车录入数据后不换行,能做到吗?

c语言中按回车录入数据后不换行,在本行继续录入数据,能做到吗?

------解决方案--------------------

Windows:

[C/C++ Code]#include

#include

void ConPrint(char *CharBuffer, int len);

void ConPrintAt(int x, int y, char *CharBuffer, int len);

void gotoXY(int x, int y);

void ClearConsole(void);

void ClearConsoleToColors(int ForgC, int BackC);

void SetColorAndBackground(int ForgC, int BackC);

void SetColor(int ForgC);

void HideTheCursor(void);

void ShowTheCursor(void);

int main(int argc, char* argv[])

{

HideTheCursor();

ClearConsoleToColors(15, 1);

ClearConsole();

gotoXY(1, 1);

SetColor(14);

printf("This is a test...\n");

Sleep(5000);

ShowTheCursor();

SetColorAndBackground(15, 12);

ConPrint("This is also a test...\n", 23);

SetColorAndBackground(1, 7);

ConPrintAt(22, 15, "This is also a test...\n", 23);

gotoXY(0, 24);

SetColorAndBackground(7, 1);

return 0;

}

//This will clear the console while setting the forground and

//background colors.

void ClearConsoleToColors(int ForgC, int BackC)

{

WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);

//Get the handle to the current output buffer...

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

//This is used to reset the carat/cursor to the top left.

COORD coord = {0, 0};

//A return value... indicating how many chars were written

//not used but we need to capture this since it will be

//written anyway (passing NULL causes an access violation).

DWORD count;

//This is a structure containing all of the console info

// it is used here to find the size of the console.

CONSOLE_SCREEN_BUFFER_INFO csbi;

//Here we will set the current color

SetConsoleTextAttribute(hStdOut, wColor);

if(GetConsoleScreenBufferInfo(hStdOut, &csbi))

{

//This fills the buffer with a given character (in this case 32=space).

FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

//This will set our cursor position for the next print statement.

SetConsoleCursorPosition(hStdOut, coord);

}

}

//This will clear the console.

void ClearConsole()

{

//Get the handle to the current output buffer...

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

//This is used to reset the carat/cursor to the top left.

COORD coord = {0, 0};

//A return value... indicating how many chars were written

// not used but we need to capture this since it will be

// written anyway (passing NULL causes an access violation).

DWORD count;

//This is a structure containing all of the console info

// it is used here to find the size of the console.

CONSOLE_SCREEN_BUFFER_INFO csbi;

//Here we will set the current color

if(GetConsoleScreenBufferInfo(hStdOut, &csbi))

{

//This fills the buffer with a given character (in this case 32=space).

FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

//This will set our cursor position for the next print statement.

SetConsoleCursorPosition(hStdOut, coord);

}

}

//This will set the position of the cursor

void gotoXY(int x, int y)

{

//Initialize the coordinates

COORD coord = {x, y};

//Set the position

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

文章评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值