C 如何用另一个字符串替换一个字符串中的单个字符?
正在寻找用另一个字符串替换字符串的字符。我希望它能工作在字符串的中间,并保留后面的字符。< /P> e、 g.下面要更改字符串“和”to be“和空格the”,当前使用strstr()输出“和空格”。理想情况下,这可以在同一字符串中多次工作,例如“和CAT-->”和“空格CAT”C 如何用另一个字符串替换一个字符串中的单个字符?,c,C,正在寻找用另一个字符串替换字符串的字符。我希望它能工作在字符串的中间,并保留后面的字符。< /P> e、 g.下面要更改字符串“和”to be“和空格the”,当前使用strstr()输出“和空格”。理想情况下,这可以在同一字符串中多次工作,例如“和CAT-->”和“空格CAT” #include<string.h> #include<stdlib.h> #include<stdio.h> int main () { char str[30] =&qu
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int main ()
{
char str[30] ="AND THE";
char * pch;
pch = strstr(str," ");
if (pch != NULL){
strncpy (pch,"SPACE",6);
}
printf("%s\n",str);
return 0;
}
OUTPUT = ANDSPACE
DESIREDOUTPUT = ANDSPACETHE
#包括
#包括
#包括
int main()
{
char str[30]=“和”;
char*pch;
pch=strstrstr(str,“”);
如果(pch!=NULL){
strncpy(pch,“空间”,6);
}
printf(“%s\n”,str);
返回0;
}
输出=ANDSPACE
DESIREDOUTPUT=和空格
您可以从以下内容开始:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str[30] = "AND THE";
char strtoinsert[] = "SPACE";
char* pch = strstr(str, " ");
if (pch != NULL) {
// move remaining part of string further in order to make room
memmove(pch + strlen(strtoinsert), pch + 1, strlen(pch));
// copy the string to insert
memcpy(pch, strtoinsert, strlen(strtoinsert));
}
printf("%s\n", str);
return 0;
}
#包括
#包括
#包括
int main()
{
char str[30]=“和”;
字符strtoinsert[]=“空格”;
char*pch=strstrstr(str,“”);
如果(pch!=NULL){
//进一步移动绳子的剩余部分以腾出空间
memmove(pch+strlen(strtoinsert)、pch+1、strlen(pch));
//复制要插入的字符串
memcpy(pch、strotinsert、strlen(strotinsert));
}
printf(“%s\n”,str);
返回0;
}
这将替换遇到的第一个空格。有了这个基础,您应该能够找出如何替换字符串中的所有空格
提示1:重复整个过程,直到找不到更多的空间
提示2:如果要插入的字符串包含空格,那么它会稍微复杂一些,因为您不能简单地应用提示1
提示3:如果你不想只替换一个字符,而是替换一个单词,这也行不通,你应该能够找到答案。
strncpy
只是复制一个字符串。在复制字符串之前,您需要通过进一步移动字符串的其余部分来腾出空间,可以使用memmove
函数。一张纸和一支铅笔在这里可能会有所帮助。man memcpy
,man memmove
这取决于您对字符串所做的操作。您可能需要考虑<代码> fMeMeung