一道编程题,替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
本人的代码
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
本人的代码
#include <iostream> #include <string> using namespace std; int main() { char *str = "We Are Happy"; int i = 0, j, length = 12; while (str[i] != "\0") { if (str[i] == " ") { length += 2; for (j = length - 3; j > i; j--) str[j + 2] = str[j]; str[i] = "%"; str[i + 1] = "2"; str[i + 2] = "0"; } ++i; } cout << str << endl; system("pause"); return 0; }
解决方案
5
#include <iostream> #include <string> using namespace std; int main() { char *str = "We Are Happy"; string strdst; int i = 0, length = 12; while (str[i] != "\0") { if (str[i] == " "){ strdst+="%20"; } else{ strdst += str[i]; } ++i; } cout << strdst << endl; system("pause"); return 0; }
20
char *str = “We Are Happy”;是在常量区的字符串,不能进行修改,这句改成:char str[] = “We Are Happy”;
另外,由于你向后移动了字符串,要在最后补充上\0
另外,由于你向后移动了字符串,要在最后补充上\0
20
VS下把”We Are Happy”这样的常量字符串放在常量区,该区域不允许进行写操作
你网站上的编译器本人猜肯定是GCC
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
你网站上的编译器本人猜肯定是GCC
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
5
仅供参考:
#include <stdio.h> #include <string.h> char s[256]; char *p; int r,n,i; int main() { while (1) { printf("请输入一行文字(空行结束),"%%20"将替换为" ","你懂得"将替换为"XXXXXX":\n"); fgets(s,256,stdin); if ("\n"==s[0]) break; p=s; while (1) { p=strstr(p,"%20"); if (p) { memmove(p+1,p+3,strlen(p)-3+1); p[0]=" "; } else break; } p=s; while (1) { p=strstr(p,"你懂得"); if (p) { memmove(p+6,p+6,strlen(p)-6+1); for (i=0;i<6;i++) p[i]="X"; } else break; } printf("%s",s); } return 0; } //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //abcdefg%20helloworld%20something.pdf //abcdefg helloworld something.pdf //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事 //这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事 //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //