C,在字符串中插入字符串作为替换

时间:2014-01-21 14:46:47

标签: c

我在C中编程,我想编写一个函数,它接受两个字符串和一个特定的位置(开始和结束),并用第二个字符串替换第一个字符串中从开头到结尾的字符。因此,声明将是这样的:void replace(char str1[], char str2[], int from, int to);

它之所以有点问题,是因为有时你要插入的字符串比位置(从 - 到)大,有时候更小,所以它并不总是很合适。我考虑过if(strlen(str2) > to-from)else if(strlen(str2) < to-from)这样的条件,或者是其他的正式循环(因为它是唯一剩下的选项......)。

你知道循环应包含什么吗?

编辑: 我有它,但有一件事是行不通的。如果我要插入第一个字符串的字符串小于from和to之间的字符串(意味着我需要删除所困扰的字符),那么它就无法工作了。 当我想要插入的字符串小于可能的空格时激活的语句是:

    if(strlen(str2) < to-from+1)
{
    location = from+strlen(str2)+1;
    j = 0;
    for (i = from ; i < to && j < strlen(str2) ; i++)
    {
        str1[i] = str2[j];
        j++;
    }
    for(i = location ; i <= to ; i++)
    {
        for(j = i ; j <= strlen(str1) ; j++)
        {
            str1[j] = str1[j+1];
        }
    }
}

1 个答案:

答案 0 :(得分:0)

正确识别后,str2可能不适合分配给str1的空间。

由于您提供的函数原型不会返回新字符串,或者允许重新分配输入缓冲区,因此我认为在任何情况下都不可能。

如果可以,我认为您应该将原型更改为:

char* replace(char* str1, char* str2, int from, int to);

通过更改返回值,您可以返回一个新的缓冲区,调用者必须释放该缓冲区,该缓冲区将具有生成的输出字符串。