Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
311 views
in Technique[技术] by (71.8m points)

C programming how to replace spaces in a string

I've been trying to get this code to remove spaces and replace them with '%' but I can't seem to get it to work. Could someone please tell me what I'm doing wrong?

Input: The fox jumped over the moon. Outcome: The fox jumped over the moon.

Desired outcome: Input: The fox jumped over the moon. Output: The%fox%jumped%over%the%moon.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SPACE ' '

int main()
{
   char string[100], *blank, *start;
   int length, c = 0, d = 0;

   printf("Enter a string
");
   gets(string);

   length = strlen(string);

   blank = string;

   start = (char*)malloc(length+1);

   if ( start == NULL )
      exit(EXIT_FAILURE);

   while(*(blank+c))
   {
      if ( *(blank+c) == SPACE && *(blank+c+1) == SPACE )
      {}
      else
      {
         *(start+d) = *(blank+c);
     d++;
      }
      c++;
   }
   *(start+d) = '';

   printf("%s
", start);

   free(start);     

 system("PAUSE");
 }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It seems hard to read your code.Please try to use some sensible variable names. Anyway below is the while loop which is working:-

   if ( start == NULL )
      exit(EXIT_FAILURE);

   while(*(blank+c))
   {
      if ( *(blank+c) != ' ' )
      {
          c++;
      }
      else
      {
          *(blank+c) = '%';
      }
   }
   *(blank+c+1) = '';

   printf("%s
", blank);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.8k users

...