C 是否有一个函数可以将一个字符的所有实例复制到另一个字符串中的相同索引中?
基本上我要找的是一个标准函数C 是否有一个函数可以将一个字符的所有实例复制到另一个字符串中的相同索引中?,c,string,c-standard-library,C,String,C Standard Library,基本上我要找的是一个标准函数 void transcpy(char *target, const char *src, const char c) { for (int i = 0; i < strlen(target)+1; i++) if (src[i] == c) target[i] = c; } void transpy(char*target,const char*src,const char c) { 对于(int i=0;istrlen(src))
void transcpy(char *target, const char *src, const char c)
{
for (int i = 0; i < strlen(target)+1; i++)
if (src[i] == c) target[i] = c;
}
void transpy(char*target,const char*src,const char c)
{
对于(int i=0;i
这个特定的例子假设target
和src
的长度相同,但这不是我要寻找的必要前提条件。虽然假定c
出现在src
中
e。gtranscpy(单词,“word”,“r”);
其中单词是“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这可能只是实现一个刽子手游戏所特有的,但它似乎是一个足够有用的函数,它可能有一个标准的实现我不认为标准库中有这样的函数,我将实现如下:
char *replace_by_c(char *dest, const char *src, size_t size, char c) {
for (size_t i = 0; i < size; i++) {
if (src[i] == c) {
dest[i] = c;
}
}
return dest;
}
这使得函数可以在许多情况下使用,例如,该函数可以在不终止NUL
的情况下工作,并且可以将字符NUL
处理为c
replace_by_c(dest, src, 42, '\0');
下面是一个可能的实现,当两个字符串的长度不相同时,它会处理
char *transcpy(char *dest, const char *src, char c)
{
size_t shortest = strlen(dest);
if( strlen( dest ) > strlen(src ) )
shortest = strlen( src );
for (size_t i = 0; i < shortest; i++)
{
if( c == src[i])
{
dest[i] = c;
}
}
return dest;
} // end function: transcpy
char*transcpy(char*dest,const char*src,char c)
{
最短尺寸=斯特伦(目的地);
如果(strlen(dest)>strlen(src))
最短=strlen(src);
对于(大小i=0;i
No,没有这样的标准函数。您只需修改函数即可处理src
和target
不具有相同长度的空指针的情况我不知道标准C中有这样的函数;但是在C++中,lambda函数会提供更多的灵活性。这不处理源和目的数组的长度不同的情况。
char *transcpy(char *dest, const char *src, char c)
{
size_t shortest = strlen(dest);
if( strlen( dest ) > strlen(src ) )
shortest = strlen( src );
for (size_t i = 0; i < shortest; i++)
{
if( c == src[i])
{
dest[i] = c;
}
}
return dest;
} // end function: transcpy