Sponsored Content
Top Forums Programming Why does fflush(stdin) fail to work ? Post 303022512 by chihuyu on Sunday 2nd of September 2018 06:34:17 AM
Old 09-02-2018
Why does fflush(stdin) fail to work ?

Code:
   #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
        double number;
        while (scanf("%lf", &number) != 1)
        {   
            printf("Error\n");
           
        }   
        printf("%lf\n", number);
    
    
        return 0;
    }

Look at the above code.

I want the program to stop for me to type something again every time scanf gets an invalid value.


Never ending loop occurs.

I know the first invalid value has not been cleared and is still in the buffer.

So I use fflush(stdin).

Code:
    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
        double number;
        while (scanf("%lf", &number) != 1)
        {   
            printf("Error\n");
            fflush(stdin);
        }   
        printf("%lf\n", number);
    
    
        return 0;
    }


However, it keeps failing to work.

Why am I wrong and how can I modify the code to make that work?
 

10 More Discussions You Might Find Interesting

1. Programming

stdin

hi, how does a program know whether some data are available from stdin? I would like to make a program which could read its data from stdin and _if_there_is_nothing_at_stdin_ from a file which name is given as an argument. If there is nothing in stdin and no filename is given as argument,... (2 Replies)
Discussion started by: marquis
2 Replies

2. Shell Programming and Scripting

redirection stdin

hello all, I need to create a password change utility for a database. I need to gather at the command line the username, password and database sid. I have the program currently doing this. What I would like to do is not have the new password appear on the screen when I do my read command.... (2 Replies)
Discussion started by: whited05
2 Replies

3. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

4. Shell Programming and Scripting

redirect STDIN

can you redirect STDIN with command arguments? I have tried this approach: # ./script -option <argument1> <argument2> 0<$2 # $2: ambiguous redirect Is this possible? (4 Replies)
Discussion started by: prkfriryce
4 Replies

5. Programming

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (1 Reply)
Discussion started by: vvaidyan
1 Replies

6. UNIX for Dummies Questions & Answers

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (3 Replies)
Discussion started by: vvaidyan
3 Replies

7. UNIX for Dummies Questions & Answers

fork and stdin

When a process fork(), the child share the same file descriptors as his father. Thus, they share the same stdin. Quick and dirty exemple below (sorry for the ugly gets() call) : #include <stdio.h> #include <unistd.h> int main() { char buf; if (fork()) { /*parent */ ... (1 Reply)
Discussion started by: milouz
1 Replies

8. UNIX for Dummies Questions & Answers

redirection stdin

Bonjour, Mon application en C sous linux tourne en redirigeant stdin vers un fichier. Exemple; $appli1 <file1. PB: Je voudrais temporairement redonner la main au user sur le clavier. Alors je pensais ajouter system("appli2"); dans appli1. Dans son main() , appli2() fait seulement un... (1 Reply)
Discussion started by: cypleen
1 Replies

9. Shell Programming and Scripting

tr command fail to work in script

Hi, I has the following command in the script. This command works fine if I execute on command prompt. If I run the script, this is not working as expected (deleting CR). tr -d "\015" < ${FilePath}/${FileName} > ${FilePath}/${File_Prefix}.csv I could not figure out whats... (6 Replies)
Discussion started by: kavuri
6 Replies

10. IP Networking

Discussion at work, would a router work pluging a cable in wan1 and lan1?

hi all. and sorry for the random question, but this sparkled a raging flame-war at work and i want more points of view situation a router, with linux of some sort, dhcp client requesting for ip in wan1 (as usual with wan ports) dhcp server listening in lan1, and assigning ip (as usual... (9 Replies)
Discussion started by: broli
9 Replies
Query Results(3)						 globus rls client						  Query Results(3)

NAME
Query Results - Data Structures struct globus_rls_attribute_object_t globus_rls_client_lrc_attr_search() returns a list of these structures which include the object name (LFN or PFN) and attribute value found by the query. struct globus_rls_string2_t String pair result. struct globus_rls_string2_bulk_t String pair result with return code, returned by bulk query operations. Functions globus_result_t globus_rls_client_free_list (globus_list_t *list) Detailed Description List results are returned as globus_list_t's, list datums depend on the type of query (eg globus_rls_string2_t, globus_rls_attribute_t, etc). A list result should be freed with globus_rls_client_free_list() when it's no longer needed. RLS supports limiting the number of results returned by a single query using an offset and reslimit. The offset specifies which result to begin with, reslimit specifies how many results to return. Offset should begin at 0 to retrieve all records. If reslimit is 0 then all results are returned at once, unless the server has a limit on results configured. If NULL is passed as the offset argument then the API will repeatedly call the query function until are results are retrieved. The following are equivalent examples of how to print the lfn,pfn pairs returned by globus_rls_client_lrc_get_lfn(): globus_list_t *str2_list; globus_list_t *p; globus_rls_string2_t *str2; // Retrieve all results, API will handle looping through partial results // if the server has a limit configured. Error handling has been omitted. globus_rls_client_lrc_get_lfn(h, "somepfn", NULL, 0, &str2_list); for (p = str2_list; p; p = globus_list_rest(p)) { str2 = (globus_rls_string2_t *) globus_list_first(p); printf("lfn: %s pfn:%s0, str2->s1, str2->s2); } globus_rls_client_free_list(str2_list); // This code fragment retrieves results 5 at a time. Note offset is set // to -1 when the server has no more results to return. int offset = 0; while (globus_rls_client_lrc_get_lfn(h, "somepfn", &offset, 5, &str2_list) == GLOBUS_SUCCESS) { for (p = str2_list; p; p = globus_list_rest(p)) { str2 = (globus_rls_string2_t *) globus_list_first(p); printf("lfn: %s pfn:%s0, str2->s1, str2->s2); } globus_rls_client_free_list(str2_list); if (offset == -1) break; } .fi Function Documentation globus_result_t globus_rls_client_free_list (globus_list_t *list) Free result list returned by one of the query functions. Parameters: list List returned by one of the query functions. Return values: GLOBUS_SUCCESS List and contents successfully freed. Author Generated automatically by Doxygen for globus rls client from the source code. Version 5.2 Wed Jan 25 2012 Query Results(3)
All times are GMT -4. The time now is 02:08 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy