Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #140150

Re: Function to trim trailing spaces

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Function to trim trailing spaces
Date 2019-01-24 02:29 -0800
Organization None to speak of
Message-ID <ln1s521h8v.fsf@kst-u.example.com> (permalink)
References <p_82E.54640$G14.18982@fx29.iad> <lnef9222nu.fsf@kst-u.example.com> <Pib2E.185816$JW5.82323@fx46.iad>

Show all headers | View raw


DFS <nospam@dfs.com> writes:
> On 1/23/2019 9:46 PM, Keith Thompson wrote:
>> DFS <nospam@dfs.com> writes:
>>> Needed to right-trim a string (remove trailing spaces), and came up with
>>> this:
>>>
>>> void rtrim(char * s) {s[strlen(s)-1]='\0';}	
>>>
>>> test_rtrim.c
>>> ------------------------------------------------
>>> #include <stdio.h>
>>>
>>> void rtrim(char * s) {s[strlen(s)-1]='\0';}	
>>>
>>> int main(int argc, char *argv[])
>>> {
>>> 	char str[100];	
>>> 	
>>> 	printf("\nEnter some text: ");
>>> 	fgets(str, sizeof(str), stdin);
>>> 	fseek(stdin,0,SEEK_END);  //flush stdin
>>> 	
>>> 	printf("Before: '%s'\n",str);
>>> 	rtrim(str);
>>> 	printf("After : '%s'\n",str);
>>> }
>>> ------------------------------------------------
>>>
>>> Seems to work well.  Any unobvious pitfalls?
[...]
>> Your fseek call also doesn't do what the comment says it does.  If stdin
>> is an interactive device (which seems to be the intent), it will simply
>> fail.  
>
> It doesn't fail at all, but yes, I know it's not a true flush of stdin.

In the program you posted, you can't tell whether it fails because you
don't test the result.

> This snippet is from a larger program, where I keyboard prompt 3x
> consecutively.
>
> Without the "flush" after the 1st prompt, the code falls through to
> the 3rd prompt without letting you enter anything for the 2nd prompt.
>
> Without the "flush" after the 2nd prompt, the 3rd prompts fails (falls
> through without letting you enter anything).
>
> So I do those flushes after all 3 prompts and it works fine.

That's odd.  Since you talk about keyboard prompts, I presume
that stdin is associated with a keyboard.  I would have expected
fseek(stdin, ...)  to fail in that case.

Can you show a (possibly reduced version of) your program in which it
works as you say it does?

I just did a test.  On Ubuntu Linux, using the above program, fseek()
fails and sets errno to 29 (ESPIPE, Illegal seek).  On Windows
(compiling with x86_64-w64-mingw32-gcc) the fseek() call succeeds,
but I'm not sure what it does.

If you want to discard input (for example, all characters up to and
including the next newline), it's probably better to read and discard
them

    int c; do c = getchar(); while (c != EOF && c != '\n');

rather than playing tricks with fseek().  (It's not necessary in your
small example because fgets() has already read the newline -- assuming
the input line isn't too long.)

[...]

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Will write code for food.
void Void(void) { Void(); } /* The recursive call of the void */

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-23 21:00 -0500
  Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-23 19:14 -0700
    Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-23 23:41 -0500
      Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-23 22:40 -0700
        Re: Function to trim trailing spaces Bart <bc@freeuk.com> - 2019-01-24 10:44 +0000
        Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-24 11:20 -0500
          Re: Function to trim trailing spaces Bart <bc@freeuk.com> - 2019-01-24 16:47 +0000
            Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-24 13:51 -0500
          Re: Function to trim trailing spaces Manfred <noname@invalid.add> - 2019-01-24 17:49 +0100
        Re: Function to trim trailing spaces James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-01-24 08:52 -0800
          Re: Function to trim trailing spaces Bart <bc@freeuk.com> - 2019-01-24 17:40 +0000
          Re: Function to trim trailing spaces James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-01-24 12:08 -0800
            Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-24 14:47 -0700
              Re: Function to trim trailing spaces scott@slp53.sl.home (Scott Lurndal) - 2019-01-25 14:40 +0000
          Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-24 14:44 -0700
      Re: Function to trim trailing spaces Barry Schwarz <schwarzb@dqel.com> - 2019-01-23 23:39 -0800
        Re: Function to trim trailing spaces Rosario19 <Ros@invalid.invalid> - 2019-01-24 10:49 +0100
          Re: Function to trim trailing spaces mark.bluemel@gmail.com - 2019-01-24 01:55 -0800
    Re: Function to trim trailing spaces "Pascal J. Bourguignon" <pjb@informatimago.com> - 2019-01-24 12:58 +0100
    Re: Function to trim trailing spaces Nathan Wagner <nw@hydaspes.if.org> - 2019-01-24 03:01 +0000
  Re: Function to trim trailing spaces Keith Thompson <kst-u@mib.org> - 2019-01-23 18:46 -0800
    Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-23 23:38 -0500
      Re: Function to trim trailing spaces Barry Schwarz <schwarzb@dqel.com> - 2019-01-23 23:39 -0800
        Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-24 11:25 -0500
          Re: Function to trim trailing spaces mark.bluemel@gmail.com - 2019-01-24 08:34 -0800
          Re: Function to trim trailing spaces Barry Schwarz <schwarzb@dqel.com> - 2019-01-24 15:05 -0800
            Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-24 18:40 -0500
      Re: Function to trim trailing spaces Keith Thompson <kst-u@mib.org> - 2019-01-24 02:29 -0800
        Re: Function to trim trailing spaces DFS <nospam@dfs.com> - 2019-01-24 15:06 -0500
          Re: Function to trim trailing spaces Mateusz Viste <mateusz@wont.tell> - 2019-01-24 20:07 +0000
            Re: Function to trim trailing spaces scott@slp53.sl.home (Scott Lurndal) - 2019-01-24 20:24 +0000
              Re: Function to trim trailing spaces Mateusz Viste <mateusz@wont.tell> - 2019-01-24 20:34 +0000
                Re: Function to trim trailing spaces scott@slp53.sl.home (Scott Lurndal) - 2019-01-24 21:37 +0000
          Re: Function to trim trailing spaces Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2019-01-24 15:34 -0500
          Re: Function to trim trailing spaces James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-01-24 13:19 -0800
          Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-24 14:52 -0700
            Re: Function to trim trailing spaces James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-01-24 14:30 -0800
              Re: Function to trim trailing spaces Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-01-24 16:59 -0700
          Re: Function to trim trailing spaces Keith Thompson <kst-u@mib.org> - 2019-01-24 14:51 -0800
  Re: Function to trim trailing spaces mark.bluemel@gmail.com - 2019-01-24 01:06 -0800
    Re: Function to trim trailing spaces Keith Thompson <kst-u@mib.org> - 2019-01-24 02:13 -0800
      Re: Function to trim trailing spaces mark.bluemel@gmail.com - 2019-01-24 03:46 -0800
    Re: Function to trim trailing spaces Anton Shepelev <anton.txt@g{oogle}mail.com> - 2019-01-24 14:56 +0300
      Re: Function to trim trailing spaces mark.bluemel@gmail.com - 2019-01-24 05:14 -0800
      Re: Function to trim trailing spaces Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-01-24 18:51 +0000
        Re: Function to trim trailing spaces "Pascal J. Bourguignon" <pjb@informatimago.com> - 2019-01-24 20:04 +0100
          Re: Function to trim trailing spaces Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-01-24 20:25 +0000
          Re: Function to trim trailing spaces Anton Shepelev <anton.txt@gmail.com> - 2019-01-24 23:50 +0300
        Re: Function to trim trailing spaces Anton Shepelev <anton.txt@gmail.com> - 2019-01-24 23:45 +0300
          Re: Function to trim trailing spaces Anton Shepelev <anton.txt@gmail.com> - 2019-01-24 23:54 +0300
      Re: Function to trim trailing spaces Ralf Damaschke <rwspam@gmx.de> - 2019-01-24 22:43 +0000
  Re: Function to trim trailing spaces Bart <bc@freeuk.com> - 2019-01-24 10:57 +0000
    Re: Function to trim trailing spaces Bart <bc@freeuk.com> - 2019-01-24 23:05 +0000
  Function to trim trailing spaces "I Set My Girlfriend's Pantyhose on Fire" <cdalten@gmail.com> - 2019-01-24 03:53 -0800

csiph-web