Troubleshooting a Test Program in Visual C++ 6

Click For Summary

Discussion Overview

The discussion revolves around troubleshooting a test program written in Visual C++ 6, focusing on issues related to input handling and output visibility. Participants explore potential solutions for problems encountered while running the program, including the need for multiple enter key presses and ensuring the console window remains open to view output.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant reports needing to press enter twice after input, both in the editor and when running the .exe, and seeks clarification on this behavior.
  • Another participant mentions that compiling with gcc results in only needing to press enter once, expressing more confidence in that version.
  • Suggestions for resolving the output visibility issue include using `cin.get()` or creating a batch file with a pause command to keep the console window open.
  • There is a discussion about passing strings by reference versus by value, with one participant noting the need to modify the string in their larger program.
  • Some participants suggest using `cin >> name;` as an alternative input method, while others question the preference for `printf` over C++ style output.
  • One participant shares that recompiling in Visual C++.net resolved the double enter issue but introduced new problems.
  • Another participant raises a question about the type of numbers for a separate programming issue related to creating tables based on user input.

Areas of Agreement / Disagreement

Participants express differing views on the input handling issues and the effectiveness of various solutions. There is no consensus on the best approach to resolve the double enter problem or the preferred input/output methods.

Contextual Notes

Some discussions involve non-standard libraries and practices, such as the use of `getch()` from conio.h, which may not be universally applicable. Additionally, the conversation touches on the differences between C and C++ programming styles, particularly regarding input/output functions.

Who May Find This Useful

Individuals working with Visual C++ 6 or similar environments, those troubleshooting input/output issues in console applications, and programmers interested in the nuances of string handling in C++ may find this discussion beneficial.

Math Is Hard
Staff Emeritus
Science Advisor
Gold Member
Messages
4,663
Reaction score
36
I wrote a little test program to try to figure out some problems I am having in another program I'm working on.

Code:
# include <iostream>
# include <string>
using namespace std;

void ahoy(string nameEntered)
{
	cout << "Ahoy, " << nameEntered << "!" << endl;
}

int main()
{
	string name;
	cout << "enter your name: ";
	getline(cin, name);
	ahoy(name);	
	return 0;
}
I am using Visual C++ 6.
Problem 1: After I enter keyboard input I have to press enter twice. Why not once? I see this both when I am testing the program in the editor, and also when I run the .exe.
Problem 2: In the .exe, the window closes so I never see the output from the function. How can I make it pause?
I haven't dealt with C++ in a couple of years so I may have just forgotten some simple things. :redface: Thanks for your advice.
 
Physics news on Phys.org
When I compile with gcc 3.4.4, I only have to hit enter once. I have more faith that the version compiled with gcc is correct than I do the version compiled by VS.


OTOH, there's probably a perfectly reasonable explanation for what's going on. I just haven't figured it out yet.

For problem 2, simply waiting for more input... say cin.get()... will suffice. I suspect your double-enter problem will foil that plan, though. (Though you could do it twice)


An aside: your argument to `ahoy' should probably be

const string &nameEntered

and not

string nameEntered

. What you wrote will make a brand new copy of the string object for the ahoy function to use; the alternative I suggested will pass it by reference (and states that ahoy promises not to modify it), so that copies aren't made.
 
hmm.. I actually do need to make modifications to the string in the function of the larger program I am working on. But, if I can do a pass by reference, can I just output the original string in main() after the function has done it's work on it? I get a little confused about what I can do with strings vs. what I can do with char arrays regarding pass by reference.
 
WRT 2) you can also run the program from a .bat shortcut using the pause command. This keeps the console window open after the program terminates so you can see the output.

For example:
Example test.bat file
Code:
@A shortcut that starts your console program and pauses so you read output
START C:\MYPROGGY\foo.exe
pause

I assume your using windows, i think you can also do the same by creating a windows shortcut and adjusting the properties options for it.

WRT 1) http://support.microsoft.com/default.aspx?scid=kb;EN-US;q240015 Maybe of help.
 
Last edited by a moderator:
Another point:

Why not use "cin >> name;"
 
Hurkyl said:
For problem 2, simply waiting for more input... say cin.get()... will suffice. I suspect your double-enter problem will foil that plan, though. (Though you could do it twice)

You were right. I threw in a couple of getchar(); lines and it behaved.
3trQN said:
WRT 1) See here Maybe of help.
aha! I am going down to the school labs and see if they have Visual C++ .net.
J77 said:
Another point:

Why not use "cin >> name;"
'cause Betty Lou or Zsa Zsa might want to use my program.:wink:
 
VC++6.0 is awesome, printf is your friend..but i don't get the double enter problem when compilng your code...

getch() from conio.h is good to use if your on windows...its not a standardized library thogh.
 
My double enter problem vanished when I recompiled in Visual C++.net in the lab. But then that brought me a few new last minute problems to work out. Fortunately I got it all sorted out before the deadline. whew!
 
getch() is from conio.h and is nonstandard. getchar() is in stdio.h and is standard. Why would you prefer printf when using C++, though?
 
  • #10
easier to control for , for me anyways. and ... . there's no difference to using native C functions in C++..isn't iostream in C++ based on printf?
 
Last edited:
  • #11
If your using C++ you should code in C++... overloading the printf functionis very messy looking compared to overloading count which is nice and clean.
 
  • #12
Hi all!

Im markus from finland.I have aproblem (sorry my english is not the best..)

I try to make program, whic ask numbers, and put thme in different tables. The number of tables comes from user. how can i make code, which make as many tabels as user tell?


Marksu
 
  • #13
markushwalber:

what type of numbers are being asked? just integers, decimals (float) , imaginary?

given a number how should they be formated into tables?

reply back with more details and i will assist.
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 24 ·
Replies
24
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K