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:
* Get free support
* Communicate privately with other members (PM).
* Removal of this message
* 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
Go Back   Tech Support Forum > The Conversation Pit > Programming
User Name
Password
Site Map Register Donate Rules Blogs Mark Forums Read

Programming A discussion forum for programs and programming used in tech-related businesses.

Reply
 
Thread Tools
Old 03-18-2008, 03:53 PM   #1 (permalink)
Resident Pirate
 
Jack.Sparrow's Avatar
 
Join Date: Jan 2007
Location: Qld, Aus
Posts: 16,717
OS: XP SP2/Vista SP1

My System

Blog Entries: 6
Send a message via MSN to Jack.Sparrow
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;
}
It's prints the "a =" part and scans in the input, then it quits. Even if I insert another line to print "ch=", it prints that line, then quits. I think I know why this is happening, but I can't figure out how to stop it.

Can anyone see where the error is? (Just a nudge in the right direction would be very helpful)

Thanks for reading.
Jack.Sparrow is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Bookmark on Thread SoupReddit!
Reply With Quote
Old 03-18-2008, 08:52 PM   #2 (permalink)
Moderator
 
shuuhen's Avatar
 
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.
shuuhen is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Bookmark on Thread SoupReddit!
Reply With Quote
Old 03-18-2008, 09:51 PM   #3 (permalink)
Resident Pirate
 
Jack.Sparrow's Avatar
 
Join Date: Jan 2007
Location: Qld, Aus
Posts: 16,717
OS: XP SP2/Vista SP1

My System

Blog Entries: 6
Send a message via MSN to Jack.Sparrow
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?
Jack.Sparrow is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Bookmark on Thread SoupReddit!
Reply With Quote
Old 03-18-2008, 11:22 PM   #4 (permalink)
Moderator
 
shuuhen's Avatar
 
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.
shuuhen is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Bookmark on Thread SoupReddit!
Reply With Quote
Old 03-18-2008, 11:33 PM   #5 (permalink)
Resident Pirate
 
Jack.Sparrow's Avatar
 
Join Date: Jan 2007
Location: Qld, Aus
Posts: 16,717
OS: XP SP2/Vista SP1

My System

Blog Entries: 6
Send a message via MSN to Jack.Sparrow
Re: Logical error I think.

Thanks for the link and the reply. I think I see what the issue is now. I'll go play with it for now and if I can't figure it out, I'll post back.
Jack.Sparrow is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Bookmark on Thread SoupReddit!
Reply With Quote
Reply


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



All times are GMT -7. The time now is 09:20 PM.



Copyright 2001 - 2008, Tech Support Forum

Search Engine Friendly URLs by vBSEO

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81