![]() |
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
![]() |
![]() |
|||
| Welcome
to Tech Support Forum home to more then 136,000 problems solved. Issues
have included: Spyware, Malware, Virus Issues, Windows, Microsoft,
Linux, Networking, Security, Hardware, and Gaming Getting your
problem solved is as easy as: 1. Registering for a free account 2. Asking your question 3. Receiving an answer Registered members: * See fewer ads. * And much more..
|
| Want to know how to post a question? click here | Having problems with spyware and pop-ups? First Steps |
|
|||||||
| Programming A discussion forum for programs and programming used in tech-related businesses. |
![]() |
|
|
Thread Tools |
|
|
#1 (permalink) |
|
Resident Pirate
|
Logical error I think.
Hi
![]() I've got this little program (it doesn't do much) but I can't find where the error is in it ![]() Code:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
double a;
char ch;
printf("a = ");
scanf("%lf", &a);
scanf("%c", &ch);
return EXIT_SUCCESS;
}
Can anyone see where the error is? (Just a nudge in the right direction would be very helpful) Thanks for reading. |
|
|
|
|
|
#2 (permalink) |
|
Moderator
Join Date: Sep 2004
Location: Colorado
Posts: 700
OS: Mac OS 9.1, Mac OS X 10.5.4, WinXP Pro, FreeBSD 6.0, Gentoo Linux
|
Re: Logical error I think.
It's a problem with scanf(). I have generally avoided using it in anything, so I can't really help with the exact scanf() issue. A lot of programmers avoid that function because it can cause issues. A good way to deal with input is to use fgets() to read into a large buffer, then process the data from there.
You can declare a large buffer with: char tmpbuf[BUFSIZ]; BUFSIZ is a constant defined in C, but feel free to use something other than tmpbuf if you want for the temporary buffer. There is an actual limit to how much can be stored in that temporary buffer, but it is a fairly large number.
__________________
![]() Has it been a few days since I replied to your thread? Don't panic! I'm a busy college student and may forget a post if I'm extra busy (or it might just take me a while to be able to do a decent reply). If you still need help and are awaiting my reply after a few days, PM me about it. When posting what errors you get, please give the full message. It makes helping you much easier. |
|
|
|
|
|
#3 (permalink) |
|
Resident Pirate
|
Re: Logical error I think.
Thanks for the reply shuuhen. That question is actually from a practical for one of my subjects. We've just started learning the basics. The lecturer has mentioned that scanf is bad but hasn't taught us an alternative. That piece of code is what we were given and were told that we can use any means to discover the error expect asking the lecturer for help. I also thought that the second scanf might be the issue.
How do you think it should be implemented? |
|
|
|
|
|
#4 (permalink) |
|
Moderator
Join Date: Sep 2004
Location: Colorado
Posts: 700
OS: Mac OS 9.1, Mac OS X 10.5.4, WinXP Pro, FreeBSD 6.0, Gentoo Linux
|
Re: Logical error I think.
Well, without scanf() is how I'd implement it. Since you're required to figure out what's wrong, try playing with larger numbers of scanfs. Hint: printf() is something I use a lot for debugging and the char datatype is fantastic. What exactly is happening when you call scanf()?
If your textbook doesn't have enough information about the function, a reference may help.
__________________
![]() Has it been a few days since I replied to your thread? Don't panic! I'm a busy college student and may forget a post if I'm extra busy (or it might just take me a while to be able to do a decent reply). If you still need help and are awaiting my reply after a few days, PM me about it. When posting what errors you get, please give the full message. It makes helping you much easier. |
|
|
|
![]() |
| Thread Tools | |
|
|