·思想:倒着copy
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
// length是数组string的最大容量,字符串实际长度并不知道,需要现统计。
void ReplaceBlank(char string[], int length) {
if (string == NULL || length <= 0) {
return;
}
int originalLength = 0;
int numberOfBlank = 0;
int i = 0;
while (string[i] != '\0') {
originalLength++;
if (string[i] == ' ') {
numberOfBlank++;
}
i++;
}
int newLength = originalLength + 2* numberOfBlank;
if (originalLength > length) {
cout << "预留空间不够" << endl;
return;
}
int indexOfOriginal = originalLength;
int indexOfNew = newLength;
while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) { //特殊情况:开头为空字符的情况
if (string[indexOfOriginal] == ' ') {
string[indexOfNew--] = '0';
string[indexOfNew--] = '2';
string[indexOfNew--] = '%';
}
else {
string[indexOfNew--] = string[indexOfOriginal];
}
indexOfOriginal--;
}
}
int main()
{
char string[30];
strcpy_s(string, "ab df");
ReplaceBlank(string, 30);
cout << string << endl;
return 0;
}