我想用另一對替換一對字符。
例如,如果要將“ax”替換為“57”并且字串為“vksax”,則會給出“vks57”。
以這種方式嘗試過,但得到一個奇怪的輸出,它只是部分正確:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char dummy;
int i;
char string[16];
scanf("%s", string);
for(i=0;string[i];i ){
if(string[i] == 'a' && string[i 1] == 'x'){
string[i] = '5' ;
string[i 1] = '7';
i=0;
}
printf("%s", string) ;
}
exit(0);
}
我無法弄清楚為什么它會給出,例如,1234ax輸出的輸入1234ax1234ax1234ax1234ax123457123457123457123457123457123457
uj5u.com熱心網友回復:
在 for 回圈內
for(i=0;string[i];i ){
if(string[i] == 'a' && string[i 1] == 'x'){
string[i] = '5' ;
string[i 1] = '7';
i=0;
}
這個說法
i=0;
沒有意義。去掉它。而不是
string[i 1] = '7';
寫
string[ i] = '7';
并移動這個電話
printf("%s", string) ;
在 for 回圈之外。
注意變數dummy被宣告但沒有被使用。
char dummy;
洗掉此宣告。
并且使用exit( 0 );代替沒有很大意義return 0;。
scanf如果這樣寫,呼叫會更安全
scanf("s", string);
uj5u.com熱心網友回復:
由于這個問題被標記為C ,這里是C 單行答案:
#include <string>
std::string String = "vksax";
String.replace(String.find("ax"), 2, "57");
熟悉 std::string https://www.cplusplus.com/reference/string/string/
作為函式的解決方案(它假設要替換的子字串和替換具有相同的長度):
std::string FindAndReplace(std::string sInputString, std::string sReplaceThis, std::string sReplacement)
{
size_t iPos = sInputString.find(sReplaceThis);
if(iPos == std::string::npos)
return sInputString;
sInputString.replace(iPos, sReplacement.length(), sReplacement);
return sInputString;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359731.html
