473,396 Members | 1,997 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Query

19
Dear sir/madam,
This is Harika. I have a doubt about a function called getchar().
Why it doesnot work after reading a string using scanf() function.

For ex:

printf("Enter the string");
scanf("%s",a);
b=getchar();
putchar(b);


I hope u would give me compatible solution.

Thank you.
Sep 6 '06 #1
8 2520
When the second statement will be executed, we have to give the string followed by a return character(i.e., we have to press the Enter key). Whenever we are giving some input, it will pass through the buffer named "stdin". So the last character, i.e., return character get stored in this buffer. So when the third staement will be executed, it gets the return character from the stdin and get stored in the variable b and as the return key is required to terminate the getchar() function call, it does not ask you to input any thing else. Just print the value of b in integer form and check it will give you 13 (i.e., the ASCII code of return character.

So whenever there is a requirement of reading character(s), it is required to flush the input buffer. So the correct way is as follows:

printf("Enter the string");
scanf("%s",a);
fflush(stdin);
b=getchar();
putchar(b);
Sep 6 '06 #2
Harika
19
When the second statement will be executed, we have to give the string followed by a return character(i.e., we have to press the Enter key). Whenever we are giving some input, it will pass through the buffer named "stdin". So the last character, i.e., return character get stored in this buffer. So when the third staement will be executed, it gets the return character from the stdin and get stored in the variable b and as the return key is required to terminate the getchar() function call, it does not ask you to input any thing else. Just print the value of b in integer form and check it will give you 13 (i.e., the ASCII code of return character.

So whenever there is a requirement of reading character(s), it is required to flush the input buffer. So the correct way is as follows:

printf("Enter the string");
scanf("%s",a);
fflush(stdin);
b=getchar();
putchar(b);
Dear pukur,

Thanks for ur reply. Iam so glad with ur reply. But iam getting segmentation fault which u sent the program. I have got that when we put getchar() functions twice concurently. It executes succesfully without putting any fflush. What do u say of it.

for ex:

#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s",a);
printf("Enter the char to count:");
getchar();
b=getchar();
putchar(b);

}

Why do i get segmentation fault even when we put fflush function.
I hope u would give me quick reply.
Thank you.
Sep 12 '06 #3
The segmentation fault is might be due to the string you are giving as input exceeds the length of the array.

See if you declare an array of 10 characters, then the length of the input string should vary between 1 and 9. Because the string should terminate with a null character and it also get stored in the array you declared.
Sep 12 '06 #4
Harika
19
The segmentation fault is might be due to the string you are giving as input exceeds the length of the array.

See if you declare an array of 10 characters, then the length of the input string should vary between 1 and 9. Because the string should terminate with a null character and it also get stored in the array you declared.


Good evening sir,

Actually i have taken sufficient memory to store the string.

consider the below example as u told,

~
#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s",a);
printf("Enter the char :");
fflush(stdin);
b=getchar();
putchar(b);
}

Actually its not reading char. Without reading its skipping from the program.

By putting getchar() function twice concurrently shown below its reading the char and executing succesfully. What do u say of it.

#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s",a);
printf("Enter the char to count:");
b=getchar();
b=getchar();
putchar(b);
}


thank you.
Sep 13 '06 #5
Harika
19
When the second statement will be executed, we have to give the string followed by a return character(i.e., we have to press the Enter key). Whenever we are giving some input, it will pass through the buffer named "stdin". So the last character, i.e., return character get stored in this buffer. So when the third staement will be executed, it gets the return character from the stdin and get stored in the variable b and as the return key is required to terminate the getchar() function call, it does not ask you to input any thing else. Just print the value of b in integer form and check it will give you 13 (i.e., the ASCII code of return character.

So whenever there is a requirement of reading character(s), it is required to flush the input buffer. So the correct way is as follows:

printf("Enter the string");
scanf("%s",a);
fflush(stdin);
b=getchar();
putchar(b);


Dear sir,

This is Harika. Thank you sir with your compatible reply i have solved my problem with putting new line character in scanf() function is shown below.

#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s \n",a);
fflush(stdin);
b=getchar();
putchar(b);

}

Iam so glad with your response. Thank you.
Sep 15 '06 #6
koder
23
When the second statement will be executed, we have to give the string followed by a return character(i.e., we have to press the Enter key). Whenever we are giving some input, it will pass through the buffer named "stdin". So the last character, i.e., return character get stored in this buffer. So when the third staement will be executed, it gets the return character from the stdin and get stored in the variable b and as the return key is required to terminate the getchar() function call, it does not ask you to input any thing else. Just print the value of b in integer form and check it will give you 13 (i.e., the ASCII code of return character.

So whenever there is a requirement of reading character(s), it is required to flush the input buffer. So the correct way is as follows:

printf("Enter the string");
scanf("%s",a);
fflush(stdin);
b=getchar();
putchar(b);
"for the below given program
#include<stdio.h>
#include<string.h>


int main()
{
char b,a;
printf("Enter the string");
scanf("%c",&a);
b=getchar();
putchar(b);
printf("\n%d",b);
return 0;
}

if i input some character like "out"
the out put will be "u" and the decimal 117.I understand that teh program is taking the second character of what ever i give as input and printing the character as well it's ascii value too.My question is how this program is taking the second character particularly when i give a string of characters?also if i give a single character input it throws NO character output but rather a decimal output of 10.
my explanation to this is

"when give a single character input"
The scanf will read what ever from the stdin buffer except the new line feed(LF)
When the getchar peeps to stdin buffer for any input it sees no input except LINE FEED and prints it's decimal value

"when give a string as input"
when gives a string as input , the scanf,with a "%c" as format specifier will read the first character and goes away.when the getchar comes ,for his turn,he will get the second character,Thus he prints the second character and his decimal ASCII value.
Please correct me,if i am wrong
regards
Sep 15 '06 #7
Good evening sir,

Actually i have taken sufficient memory to store the string.

consider the below example as u told,

~
#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s",a);
printf("Enter the char :");
fflush(stdin);
b=getchar();
putchar(b);
}

Actually its not reading char. Without reading its skipping from the program.

By putting getchar() function twice concurrently shown below its reading the char and executing succesfully. What do u say of it.

#include<stdio.h>

main()
{

char b,a[10];
printf("\n Enter");
scanf("%s",a);
printf("Enter the char to count:");
b=getchar();
b=getchar();
putchar(b);
}


thank you.
hey the program which you have written with single
getchar() worked fine I used your second program and the second program it accepted the first char and when enter (return ) key is pressed it accepts that value .
Sep 15 '06 #8
Dear sir/madam,
This is Harika. I have a doubt about a function called getchar().
Why it doesnot work after reading a string using scanf() function.

For ex:

printf("Enter the string");
scanf("%s",a);
b=getchar();
putchar(b);


I hope u would give me compatible solution.

Thank you.
getchar works with only char datatype, not more than a character (string) so it fails.
pragnesh
Sep 15 '06 #9

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: jaysonsch | last post by:
Hello! I am having some problems with a database query that I am trying to do. I am trying to develop a way to search a database for an entry and then edit the existing values. Upon submit, the...
29
by: shank | last post by:
1) I'm getting this error: Syntax error (missing operator) in query expression on the below statement. Can I get some advice. 2) I searched ASPFAQ and came up blank. Where can find the "rules"...
9
by: netpurpose | last post by:
I need to extract data from this table to find the lowest prices of each product as of today. The product will be listed/grouped by the name only, discarding the product code - I use...
3
by: Harvey | last post by:
Hi, I try to write an asp query form that lets client search any text-string and display all pages in my web server that contain the text. I have IIS 6.0 on a server 2003. The MSDN site says...
4
by: Diamondback | last post by:
I have two tables, WIDGETS and VERSIONS. The WIDGETS table has descriptive information about the widgets while the VERSIONS table contains IDs relating to different iterations of those widgets...
14
by: Dave Thomas | last post by:
If I have a table set up like this: Name | VARCHAR Email | VARCHAR Age | TINYINT | NULL (Default: NULL) And I want the user to enter his or her name, email, and age - but AGE is optional. ...
0
by: starace | last post by:
I have designed a form that has 5 different list boxes where the selections within each are used as criteria in building a dynamic query. Some boxes are set for multiple selections but these list...
6
by: jjturon | last post by:
Can anyone help me?? I am trying to pass a Select Query variable to a table using Dlookup and return the value to same select query but to another field. Ex. SalesManID ...
4
by: Stan | last post by:
I am using MS Office Access 2003 (11.5614). My basic question is can I run a query of a query datasheet. I want to use more that one criteria and can not get that query to work. I thought I...
6
by: jsacrey | last post by:
Hey everybody, got a secnario for ya that I need a bit of help with. Access 97 using linked tables from an SQL Server 2000 machine. I've created a simple query using two tables joined by one...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.