Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 358
  • Last Modified:

How to move cursor to newline in console window.....

I want to move the cursor in a console window to a new line without pushing enter key, is that possible?

void main(void)
{
char line[100];
cout << " Type a line terminated by 't'" << endl;
cin.getline( line, 100, 't' );
cout << line;

}
0
eing9603
Asked:
eing9603
  • 5
  • 3
  • 2
  • +2
1 Solution
 
sburckCommented:
I think

cout << "\n\r";

 should work.
0
 
eing9603Author Commented:
The problem is that cin.getline(); must be confirmed with enter..

I want to type a string and confirm with 't', then the string should be stored in line... and the cursor should move to the next line..
0
 
laeuchliCommented:
try using __getchar();
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
nietodCommented:
Standard C/C++ does not provide any way to do this.  In standard C/C++ input is always "line buffered" this means that the input typed by the user does not become available to your program until the user presses enter/return.   This is to give the user an opportunity to correct mistakes and also has to do with historical hardware related reasons.

Now this does not mean it is not possible, it just means that standard C/C++ does not support it.   Many operating systems will have features that would allow you to do this.  but we can't comment on that without knowing the operating system.     For example the solution laeuchi proposed works on some compilers in the Windows OS.
0
 
karthicrajaCommented:
this is enough
char line[100];
cout << " Type a line terminated by 't'\n" << endl;
cin.getline( line, 100, 't' );
cout << line;
0
 
nietodCommented:
karthicraja, try it.  It doesn't work.  read what I said.
0
 
eing9603Author Commented:
Adjusted points from 200 to 250
0
 
eing9603Author Commented:
nietod, you are right.. It doesn't work.. and my operating system is windows NT...
0
 
sburckCommented:
I think you ignored laeuchli's answer, which should work.  You weren't clear  in the original question that you wanted the CRLF to happen during getline, but to do this, you must get character by character, and, when you have determined the end-of-input, output the CRLF yourself.  If you want to use cin/cout, use get/put - Something like:

char line[100];
char index = 0;
char ch;

cout << " Type a line terminated by 't'" << endl;
while (index < 100)
{
    cin.get(ch);
    if (ch== 't')
   {
        cout << "/n/r"
        break;
    } else
        cout << ch;
    line[index++] = ch;
// you may want other things, like backspace handling:
//  if (ch == '\x08) --index;, and possibly other things.
}        
0
 
eing9603Author Commented:
sburck,  It doesn't work.. I think nietod is right, read nietod's comment..  My compiler is Microsoft VC++ 5.0 (Visual studio) and i use an Aplication console project..
0
 
sburckCommented:
Eing9603 -

I'll use standard C functions here, not C++.  I don't have a reference manual around, and the on-line ones weren't much use, but as far as my feeble memory serves me, although what nietod says is true for getchar, it isn't true for getc or fgetc - in fact, since these can also work on binary files, line buffering would be very problematic for them.  If you read the keyboard with these, I'm not sure the problem would remain.

I also seem to recall a non-standard getchar() replacement which shows up in a lot of places, called getche(), which solved the problem you're talking about.  If you have this function, it should work.










0
 
eing9603Author Commented:
Thanks for the tip, it works with getch()
and
_putch( '\r' );    /* Carriage return */
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now