2016-01-20 103 views
-8

如标题所示,我想使用C-样式而不是使用库string来插入字符在char array之后,并且请避免使用缓冲区函数,只有基本的:)。在字符数组中的特定位置插入一个字符

char sentence[100],*p = NULL; 
cin.get(sentence,100); 
char replaceChar; // after What character should we insert 
cin>>replaceChar; 
char insertingChar; // the character we are inserting after the replaceChar; 
cin >> insertingChar ; 
p = strchr(sentence , replace); 
while(p != NULL){ 
//and this is I could think of ... 
} 

所以突然想到说,我们有这样一句话: “我要苹果”,在replaceChar = A,和insertingChar = '*';

结果应该是:“我wa * nt a * pples”。

+0

使用'std :: string'使您的生活更轻松。 –

+0

在您的示例中,只有1个'a's'受到影响,是否是由设计决定的? –

+0

nope我有一个问题,当发布这个,是一个*之后的第一个'a' – JohnnyOnPc

回答

2

这将使字符向右移动,为插入提供空间。

void rshift(char *s){ 
    int n = strlen(s); 
    s[ n + 1] = 0; 
    while(n){ 
     s[ n ] = s[ n-1 ]; 
     n--; 
    } 
} 

int main(){ 

    char *p = strchr(sentence , replace); 

    if(p) { 
     p++; // insert after 
     rshift(p); 
     *p = insertingChar; 
    } 
} 
+0

@SergeyA,没有更多:) – milevyo

+0

假设,当然,有原始缓冲区中的所有添加字符的空间。或者*“使用std :: string让你的生活更轻松。”* –

相关问题