Repeated printF causes annoyance with do


 
Thread Tools Search this Thread
Top Forums Programming Repeated printF causes annoyance with do
# 1  
Old 04-25-2005
Repeated printF causes annoyance with do

Quote:
int initgrille(char *string) {
char car;
int ent;
do {
printf ( "Entrez entre 4 et 9 %s ",string);
scanf("%c",&car);
ent=atoi(&car);
} while ((ent<5) || (ent > 9) ) ;
}
This gives :
Quote:
Entrez entre 4 et 9 lignes 6
Entrez entre 4 et 9 colonnes Entrez entre 4 et 9 colonnes
after calling it twice:
Quote:
l=initgrille("lignes");
c=initgrille("colonnes");
how can i solve this so that on output i get :
Quote:
Entrez entre 4 et 9 lignes 6
Entrez entre 4 et 9 colonnes
# 2  
Old 04-25-2005
standard input is getting buffered.

To resolve , you should stop stdin buffering. Try the following
setbuf(stdin,NULL) after scanf statement.

Moreover, atoi expects a character pointer or string. So, when you type 6 and Enter(i.e. NL) NL which is 10 in decimal is getting buffered. Due to this 10 which satifies your while loop, it is displaying twice.
# 3  
Old 04-25-2005
setbuf(stdin,NULL);
hasnt changed anything
can you be more precise please Smilie
# 4  
Old 04-25-2005
I'm not sure that I understand what you want, but try a flush after the scanf:

scanf("%c",&car);
fflush(stdin);
# 5  
Old 04-25-2005
In my previous reply I mentioned the reason for displaying twice i.e. buffering stdin is on by default, this you can do off

by either setbuf(stdin,NULL) or fflush(stdin)

Even I checked the above on my m/c (solaris 8), it was working fine.

(OR) try the following

In the while loop, instead of 9 give 10 or greater because NL(New Line) has the value ASCII 10

while ((ent<5) || (ent > 11) )
# 6  
Old 04-25-2005
ive rewritten the code !!!

Quote:
#include <stdio.h>
int main () {
char coll;
int col;

do {
printf("Enter Number: \n");
scanf("%c",&coll);
fflush(stdin);
col=atoi(&coll);

} while (( col < 4 ) || (col > 9));
}
output:
Quote:
chitlesh(C)[2]$./err
Enter Number:
5
chitlesh(C)[2]$./err
Enter Number:
3
Enter Number:
Enter Number:
34
Enter Number:
chitlesh(C)[2]$
as u can c, i want the value entered to be integer and be between 3 and 10
if not asks again
when id entered 3 it repeats the question
but when its 34, it asks the question without waiting for input
# 7  
Old 04-25-2005
atoi needs a string not a character. You can convert a single character to a digit by subtracting '0'. Also when you type, say, "1\n" in response to the first question, the \n remains to be used in the next scanf. Some platforms will flush left overs if you fflush(stdin), but it's not universal. Try:
Code:
#include <stdio.h>
int main () {
char coll;
int col;

do {
    printf("Enter Number: \n");
    scanf(" %c",&coll);
    col = coll - (int)'0';
    } while (( col < 4 ) || (col > 9));
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Reading between a repeated string

I have a requirement where I have to read the lines between a repeated string FileName: abc.txt ls /data/abc.txt 1 2 #ZENCO 3 4 5 6 #ZENCO 11 213 454 7 #ZENCO (8 Replies)
Discussion started by: eskay
8 Replies

2. Shell Programming and Scripting

Getting the most repeated column

Hi all , i want to get the most repeated column in my file File: name,ID adam,12345 ----1 adam,12345 ----2 adam,934 adam,12345 ----3 john,14 john,13 john,25 ----1 john,25 ----2 tom,1 -----1 tom,2 -----1 so my output to be (5 Replies)
Discussion started by: teefa
5 Replies

3. Shell Programming and Scripting

Getting most repeated 3 lines

Hi all if i want to get the 3 lines of the most repeated lines here tony,1,x tony,1,x tony,2,x tony,2,x tony,3,x tony,4,x tony,5,x adam,1,y to get output tony,1,x tony,2,x tony3,x adam,1,y (3 Replies)
Discussion started by: teefa
3 Replies

4. Shell Programming and Scripting

Find repeated word and take sum of the second field to it ,for all the repeated words in awk

Hi below is the input file, i need to find repeated words and sum up the values of it which is second field from the repeated work.Im trying but getting no where close to it.Kindly give me a hint on how to go about it Input fruits,apple,20,fruits,mango,20,veg,carrot,12,veg,raddish,30... (11 Replies)
Discussion started by: 100bees
11 Replies

5. Shell Programming and Scripting

ssh annoyance

I have this script that routinely ssh into another host to collect data from that host. However we have these annoying boilerplates on all our machines that flood the screen from all the ssh's. Any way to filter this stdout but allow all the other stdout? In other words, the second you ssh... (4 Replies)
Discussion started by: stevenswj
4 Replies

6. Shell Programming and Scripting

Repeated Pattern

I have a list like this: todu todo tofe tafo I want to grep only the lines where the 2nd and the 4th character are the same. In this case I would get only "todo". Thanks. (3 Replies)
Discussion started by: rlopes
3 Replies

7. Shell Programming and Scripting

To find the repeated name in subject

Hi, I am using a mail application, When I use to check with the command, I will get the outputs as q -s 6128175 (9, 9/6128175) Return-path: minka.bell@abcd.org From: "Minka Bell" <minka.bell@abcd.org> To: <dcrouch@xyz.org>, Subject: Open items with new PICT system Date: Wed,... (12 Replies)
Discussion started by: gsiva
12 Replies

8. Programming

Vim highlighting annoyance

I was using vim about an hour ago doing abit of python (i only just started using vim). And I think i typed something wrong, and all of a sudden the letter i is always highlighted. Turning syntax off and on didn't work. and i couldent find the solution online. Thanks in advanced. (1 Reply)
Discussion started by: vimhelp
1 Replies

9. Shell Programming and Scripting

matching repeated character

looking for a bit of help with sed. I have a file that looks a bit like this: sdfghhjk asdfdfghgj asdfhgghj werdfvtfh edftbgh 1211211221 sdffgfm dfghnhjm dfvfsgbgh adsfv bdhgn 1111111dffg dfv1122 dsgvbghn111111 fffffffgbdghn fffffff sfgh3333gs vdf (5 Replies)
Discussion started by: robsonde
5 Replies

10. Shell Programming and Scripting

Get rid of repeated entries.

I have the following problem. The file contains many lines already sorted according to their first arguments. Some of these first arguments are repetitive. For each first argument value, I need to keep the first and the last line that contain it. For example, ... 1 234 1 348 ... ... 5 483... (2 Replies)
Discussion started by: jijibabawu
2 Replies
Login or Register to Ask a Question