Given any string, replace spaces with "%20"
/*
* ReplaceSpace.cpp
*
* Created on: Apr 10, 2012
* Author: Kiran Hegde
*/
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int countSpaces(char *str) {
int count = 0;
if (str != NULL) {
while (*str++ != '\0') {
if (*str == ' ')
count++;
}
}
return count;
}
void replaceSpaces(char *&str) {
int oldLength = strlen(str);
int noOfSpaces = countSpaces(str);
int newLength = oldLength + (2*noOfSpaces);
int newIndex = newLength;
str[newIndex] = '\0';
for (int i=oldLength-1; i>=0; i--) {
if (str[i] == ' ') {
str[newIndex - 1] = '0';
str[newIndex - 2] = '2';
str[newIndex -3] = '%';
newIndex = newIndex - 3;
}
else {
str[newIndex-1] = str[i];
newIndex--;
}
}
}
/**
* Test the function
*/
int main() {
char *test = (char *)malloc(sizeof(char)*256); // create string with enough space at the end
strcpy(test, "replace space with 3 chars");
cout << test << endl;
replaceSpaces(test);
cout << test << endl;
}