我的逻辑如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[50] = {'h','i',' ','m','e',' ','t','e'};
// k = 4 because i have 2 spaces and for each
// space i have to insert 2 spaces . so total 4
//spaces
int k=4;
for(int i=strlen(a)-1 ; i>0 && k >0 ; i--){
if(a[i] != ' ')
{
a[i+k] = a[i];
a[i] = ' ';
}
else
{
k = k - 2;
}
}
printf("%s" , a);
return 0;
}
我必须使用字符数组来解决它。我能够 使用字符串stl做到这一点 我得到的输出是 嗨,我 但是答案是 嗨---我--- te。
答案 0 :(得分:1)
有时候,我想知道是什么导致了投票失败,什么没有引起了投票。
无论如何。我当然会帮助您。
您的代码被标记为C ++。但是您的代码中没有C ++。它是纯C。
而且,您包括#include<bits/stdc++.h>
并使用std名称空间using namespace std;
。从现在开始:请一生都不要再做这种事情。或者,停止使用C ++。
此外,永远不要像C ++中的char a[50]
那样使用普通的C样式数组。
在您的代码中,您有一些错误。最关键的是缺少终止符0,然后调用strlen
。使用功能之前,请务必在某处检查该功能的工作原理。使用有意义的变量名。写评论。始终检查边界。
我更新了您的C代码:
#include <stdio.h>
int main()
{
// Character String to work on
char charString[50] = "hi me te";
// Check all possible positions in string
for (int index = 0; (index < 49) && (0 != charString[index]); ++index)
{
// If there is a space in the string
if (' ' == charString[index])
{
// Shift all characters one position to the right
for (int shiftPosition = 48; shiftPosition >= index; --shiftPosition)
{
charString[shiftPosition + 1] = charString[shiftPosition];
}
++index;
}
}
// Show result
printf("%s\n", charString);
return 0;
}
这里是C ++解决方案
#include <iostream>
#include <string>
#include <regex>
int main()
{
// Text to work on
std::string text("hi me te");
// Replace every space with 2 spaces. Print result
std::cout << std::regex_replace(text, std::regex(" "), " ");
return 0;
}
强烈建议您首先阅读一本好书。