Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,870 questions

51,793 answers

573 users

How to remove (trim) leading and trailing whitespace from a string in C

3 Answers

0 votes
#include <stdio.h>
#include <string.h>
  
#define LEN 50

void my_ltrim(char s[]);
void my_rtrim(char s[]);
  
int main(void)
{
    char s[LEN] = "   \n   \t  abcd efg     \n   \t   ";
      
    my_rtrim(s);
    my_ltrim(s);
    printf("s = %s\n", s);
     
    return 0;
}
 
void my_ltrim(char s[]) 
{ 
    int i, j, in_first_char = 0;
    
    for (i = 0, j = 0; i < strlen(s); i++) 
    {
         if ( (s[i] != ' ' && s[i] != '\n' && s[i] != '\t') || in_first_char == 1) 
         {
             s[j++] = s[i];
             in_first_char = 1;
         }
    }
    s[j] = '\0'; 
} 
void my_rtrim(char s[]) 
{ 
    int i;
     
    for (i = strlen(s) - 1; i >= 0; i--) 
         if (s[i] != ' ' && s[i] != '\n' && s[i] != '\t') 
             break; 
    s[i + 1] = '\0'; 
} 
  
/*
run:
    
s = abcd efg
 
*/

 



answered Nov 13, 2015 by avibootz
0 votes
#include <stdio.h>
#include <string.h>
  
#define LEN 50

void my_trim(char s[]);
void my_ltrim(char s[]);
void my_rtrim(char s[]);
  
int main(void)
{
    char s[LEN] = "   \n   \t  abcd efg     \n   \t   ";
      
    my_trim(s);
    printf("s = %s\n", s);
     
    return 0;
}
 
void my_trim(char s[])  
{
    my_rtrim(s);
    my_ltrim(s); 
}
void my_ltrim(char s[]) 
{ 
    int i, j, in_first_char = 0;
    
    for (i = 0, j = 0; i < strlen(s); i++) 
    {
         if ( (s[i] != ' ' && s[i] != '\n' && s[i] != '\t') || in_first_char == 1) 
         {
             s[j++] = s[i];
             in_first_char = 1;
         }
    }
    s[j] = '\0'; 
} 
void my_rtrim(char s[]) 
{ 
    int i;
     
    for (i = strlen(s) - 1; i >= 0; i--) 
         if (s[i] != ' ' && s[i] != '\n' && s[i] != '\t') 
             break; 
    s[i + 1] = '\0'; 
} 
  
/*
run:
    
s = abcd efg
 
*/

 



answered Nov 13, 2015 by avibootz
0 votes
#include <stdio.h>
#include <ctype.h>
#include <string.h>
  
#define LEN 50

char *my_trim(char *str);
  
int main(void)
{
    char s[LEN] = "\n   \n   \t  abcd efg     \n   \t   \n";
    char *p = s;
  
    p = my_trim(p);
    printf("p = %s\n", p); // p point to s[11]
     
    return 0;
}
 
char *my_trim(char *p)
{
  char *end;

  while (isspace(*p) || *p == '\n' || *p == '\t') p++;

  if (*p == 0)  
      return p;

  end = p + strlen(p) - 1;
  while (end > p && (isspace(*end) || *end == '\n' || *end == '\t')) end--;

  *(end + 1) = 0;

  return p;
}
  
/*
run:
    
p = abcd efg
 
*/

 



answered Nov 13, 2015 by avibootz

Related questions

1 answer 183 views
1 answer 189 views
1 answer 156 views
1 answer 161 views
1 answer 157 views
1 answer 76 views
...