![]() |
|
#1
|
||||
|
||||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4I just posted a GID Community blog entitled: Things to Avoid in C/C++ -- system("pause"), Part 4.
Quote:
Please let me know what you think. This is an auto-generated message posted by GIDNetwork™ on behalf of the author. __________________
During the election they said Obama could only be elected when pigs fly. Well, we currently have an epidemic of Swine Flu. Coincidence? |
|
#2
|
|||
|
|||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4I read your article and it makes sense. But it also raises another question for me. Why does it exist?
|
|
#3
|
||||
|
||||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4Because the system() function can be used to execute any operating system command, like dir, ls, rename, etc. Even shutdown given the proper command syntax.
The pause command is used in batch files to pause execution of the file. And like many things in life, you are allowed to combine things that should not be combined, like peanut butter and pickles. Both are useful, but together they suck. __________________
During the election they said Obama could only be elected when pigs fly. Well, we currently have an epidemic of Swine Flu. Coincidence? |
|
#4
|
|||
|
|||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4The problem is when you try to substitute one command for another, you often times lose functionality. The problem with the proposed solution is that it doesn't do the same thing as 'pause'. getchar and get require you to press the return key. 'pause' let's you exit on any key press. So the user has to press specific key, and translating that to the user can be more difficult than you think. What if the users keyboard doesn't have a return key, but rather an enter key. Users don't always know these mean the same thing.
The other problem is that getchar() at least takes the last keystrok out of the keyboard buffer. But the return stroke isn't removed from the buffer when entering data. So the problem is that if the last thing you did before calling getchar was hitting the return key to enter data, then getchar will pull that last return from the buffer and your program will exit anyway, so in order to insure the program pauses correctly, you must call getchar twice. But then what if you have a program that sometimes ends on data entry, and sometimes doesn't. Then occasionally you will have to instruct the user to press the return key twice. But sometimes only once. And now you have suddenly gotten into a lot more trouble. If you are pausing your program anyway you aren't exactly in the middle of a long series of calculations and so efficiency doesn't matter anyway. Just go ahead and call system("pause"). That's my opinion anyway. |
|
#5
|
|||
|
|||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4The problem with using it is when you start mixing portable C/C++ with code that is not portable. Heck, my CS class told us to use system( "pause" ) in an intro C++ course, and most of the students had no idea it was a Windows only use of the system command. It was a stupid problem when they went to later classes and started programming in Linux environments.
|
|
#6
|
|||
|
|||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4Oh I agree. I think everything Walt said initially was correct as well. I'm just saying that, when you want to use system("pause") it isn't so much as a bad thing. Really though, there needs to be a C command that mimics this, or, you need to write your own function that does it.
|
|
#7
|
||||
|
||||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4If you wish to be a professional programmer, system("pause") is a bad thing, for all the reasons I stated. And since C/C++ is not designed with keyboard I/O in mind, the functionality you are missing with proper coding doesn't really exist anyway. They are nonportable enhancements in the first place.
If you wish to disagree, that's your prerogative. But, at the expense of flogging a deceased equine, I for one refuse to go to the corner store via Northwest Airlines just because they serve pretzels. __________________
During the election they said Obama could only be elected when pigs fly. Well, we currently have an epidemic of Swine Flu. Coincidence? |
|
#8
|
|||
|
|||
Re: Things to Avoid in C/C++ -- system("pause"), Part 4Unless what you are trying to do is go for a flight and eat pretzels. If that's the case, walking to the corner store won't do.
|
Recent GIDBlog
Gang violence and the drug culture by crystalattice
| Thread Tools | Search this Thread |
| Rate This Thread | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Re: Things to Avoid in C/C++ -- gets() , Part 1 | WaltP | C Programming Language | 5 | 21-Jun-2007 12:13 |
| Re: Things to Avoid in C/C++ -- feof(), Part 3 | WaltP | C Programming Language | 0 | 19-Sep-2005 20:00 |
| Re: Things to Avoid in C/C++ -- fflush(stdin), Part 2 | WaltP | C Programming Language | 0 | 17-Sep-2005 20:39 |
| Web Site Optimization - the basic things | dimos31 | Search Engine Optimization Forum | 3 | 19-Jun-2005 12:00 |
| [Tutorial] Pointers in C (Part II) | Stack Overflow | C Programming Language | 0 | 27-Apr-2005 17:36 |
Network Sites: GIDNetwork · GIDWebHosts · GIDSearch · Learning Journal by J de Silva, The