Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何用另一个字符串替换一个字符串中的单个字符?_C - Fatal编程技术网

C 如何用另一个字符串替换一个字符串中的单个字符?

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

正在寻找用另一个字符串替换字符串的字符。我希望它能工作在字符串的中间,并保留后面的字符。< /P> e、 g.下面要更改字符串“和”to be“和空格the”,当前使用strstr()输出“和空格”。理想情况下,这可以在同一字符串中多次工作,例如“和CAT-->”和“空格CAT”

#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