Xref: news2.mv.net comp.os.msdos.djgpp:4575 From: Broeker AT PROBLEM_WITH_INEWS_DOMAIN_FILE (Hans-Bernhard Broeker) Newsgroups: comp.os.msdos.djgpp Subject: Re: fflush(stdin) : does it works ? Date: 3 Jun 1996 13:48:41 GMT Organization: RWTH -Aachen / Rechnerbetrieb Informatik Lines: 31 Message-ID: <4ouqfp$cjs@news.rwth-aachen.de> References: <4ohpaj$i0j AT tempo DOT univ-lyon1 DOT fr> NNTP-Posting-Host: axpcl1.physik.rwth-aachen.de To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Dominique Micollet (dmicolet AT u-bourgogne DOT fr) wrote: > I used to get a string with the following : > { > char One_String[80]; > ... > scanf("%[^\n]",One_String);fflush(stdin); > ... > } > The %[^\n] allows to catch any character excepted the new line and then to > get strings with blanks, tabs and so on inside them. > The fflush(stdin) is there to trash the new line, else the next scanf of a > string does not works. As others have already pointed out, fflush(stdin) will cause what ANSI C calls 'undefined behaviour' (read the comp.lang.c FAQ about the possible meanings of this term, if you haven't done so yet...). For the present task, I think the correct solution would be this: (caution: untested guess!) scanf ("%[^\n]%*1[\n]", One_String); The '%*1[\n]' should read exactly one newline, without storing it anywhere. Another alternative might be: scanf ("%[^\n]%*1c", One_String); Hans-Bernhard Broeker (Aachen, Germany)