c语言如何替换字符串中的“&”符号

/* 下面的函数可取去除字符串s中指定的字符c_h。在调用该函数时,用delchar(s,'&')即可删除s中所有的内'&'字符。容*/
char *delchar(char *s, char c_h) {
char *p,*q;
p = s;
while(*p != '\0') {
if(*p == c_h) {
q = p;
while(*q != '\0') {
*q = *(q + 1);
q++;
}
p--;
}
p++;
}
return (s);
}

⑵ C语言查找替换字符

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
voidSubstitute(char*pInput,char*pOutput,char*pSrc,char*pDst)
{
char*pi,*po,*p;
intnSrcLen,nDstLen,nLen;
//指向输入字符串的游动指针.
pi=pInput;
//指向输出字符串的游动指针.
po=pOutput;
//计算被替换串和替换串的长度.
nSrcLen=strlen(pSrc);
nDstLen=strlen(pDst);
//查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).
p=strstr(pi,pSrc);
if(p)
{
//找到.
while(p)
{
//计算被替换串前边字符串的长度.
nLen=(int)(p-pi);
//复制到输出字符串.
memcpy(po,pi,nLen);
memcpy(po+nLen,pDst,nDstLen);
//跳过被替换串.
pi=p+nSrcLen;
//调整指向输出串的指针位置.
po=po+nLen+nDstLen;
//继续查找.
p=strstr(pi,pSrc);
}
//复制剩余字符串.
strcpy(po,pi);
}
else
{
//没有找到则原样复制.
strcpy(po,pi);
}
}
intmain(intac,char*av[])
{
if(ac!=5){
printf("程序名要操作的文件新文件查找的字符串替换的字符串 ");
printf("示例:test.exe1.txt2.txthellolove ");
return0;
}
constintMAXSIZES=100;
FILE*fpSrc,*fpDes;
charfilename1[20]="1.txt";
charfilename2[20]="2.txt";
//要求查找的字符串,替换的字符串;
charps[]="hello";
charpd[]="love";
//求取所查找和替换的字符串的长度;
intlen_src=strlen(av[3]);
intlen_des=strlen(av[4]);
//定义存储字符串缓冲区;很奇怪的一点是,fgets函数不能将字符串写入动态分配的内存中
/*char*Src_buf=(char*)(sizeof(char)*MAXSIZES);
char*Cpy_buf=(char*)(sizeof(char)*MAXSIZES);
char*Des_buf=(char*)(sizeof(char)*MAXSIZES);*/
charSrc_buf[MAXSIZES]={0};
charCpy_buf[MAXSIZES]={0};
charDes_buf[MAXSIZES]={0};
//打开文件
if((fpSrc=fopen(av[1],"r+"))==NULL)
{
printf("failtoopenthefile1! ");
exit(1);
}
if((fpDes=fopen(av[2],"a+"))==NULL)
{
printf("failtoopenthefile2! ");
exit(1);
}
//进行循环读取
while(!feof(fpSrc))//判断文件是否已结束;!feof(fpSrc)
{
fgets(Src_buf,MAXSIZES,fpSrc);
Substitute(Src_buf,Des_buf,av[3],av[4]);
fputs(Des_buf,fpDes);
printf("%s",Des_buf);
}
fclose(fpSrc);
fclose(fpDes);
system("pause");
return0;
}

⑶ c语言:如何将字符串中指定的字符替换为另一个指定字符

/*功能:将str字符串中的oldstr字符串替换为newstr字符串

*参数:str:操作目标oldstr:被替换者newstr:替换者

*返回值:返回替换之后的字符串

*版本:V0.2

*/

char*strrpc(char*str,char*oldstr,char*newstr){

char bstr[strlen(str)];//转换缓冲区

memset(bstr,0,sizeof(bstr));

for(int i=0;i&lt;strlen(str);i++){

if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串

strcat(bstr,newstr);

i+=strlen(oldstr)-1;

}else{

strncat(bstr,str+i,1);//保存一字节进缓冲区

}

}

strcpy(str,bstr);

return str;

}

(3)c语言字符的替换扩展阅读:

c_str函数的返回值是constchar*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。

c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。

标准头文件&lt;cstring&gt;包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。

当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const char*类型(可读不可改)的指向字符数组的指针。例:

#include&lt;iostream&gt;

//#include&lt;cstring&gt;

#include&lt;string&gt;//使用头文件string,否则最后cout&lt;&lt;无法输出add_to

using namespace std;

int main()

{

string add_to="hello!";

const string add_on="baby";

const char*cfirst=add_to.c_str();

const char*csecond=add_on.c_str();

char*=new char[strlen(cfirst)+strlen(csecond)+1];

strcpy(,cfirst);

strcat(,csecond);

add_to=;

cout&lt;&lt;":"&lt;&lt;&lt;&lt;endl;

delete[];

cout&lt;&lt;"add_to:"&lt;&lt;add_to&lt;&lt;endl;

return 0;

}

例(1)

函数声明:const char*c_str();

c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.

这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。

注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针

比如:最好不要这样:

char*c;

string s="1234";

c=s.c_str();

//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在s的生命周期结束时,例如函数的返回)

⑷ C语言初学,字符替换

主函数的名字错了。字母顺序反了。

字符串是用数组存储的。你的str变量定义错了,应该是charstr[100];

函数调用的写法也是错的。调用函数只写函数名和参数名。而且要写在最后一个printf语句前面,等你输入完成了才能调用函数。

strchange(str,c1,c2);

函数声明则要写在main函数的前面,不是里面。

scanf();后要跟一句getchar();取走一个回车或空格字符,否则下一句scanf无法接收到你输入的字符。

修改后可执行的完整代码如下

#include<stdio.h>
char*strchange(char*str,charc1,charc2);
main(){
charc1,c2,str[100];
printf("请输入字符串:");
scanf("%s",str);
getchar();
printf("请输入要替换的字符:");
scanf("%c",&c1);
getchar();
printf("请输入被替换为的字符:");
scanf("%c",&c2);
strchange(str,c1,c2);
printf("替换后的字符串为:%s",str);
}
char*strchange(char*str,charc1,charc2){
while(*str){
if(*str==c1){
*str=c2;
}
str++;
}
returnstr;
}

⑸ 求C语言替换字符串中某个字符的函数

#include "stdio.h"
#include "string.h"
void swap(char s[100],char a,char b)/*a为原来要替换的字符,b是替换后的字符*/
{
int i;
for(i=0;i<strlen(s);i++)
{
if(s[i]==a)
{
s[i]=b;
}
}
}
main()
{
char s[100];
char a,b;
int i;
printf("请输入一个字符串:\n");
gets(s);
printf("\n请输入要替换的字符和要替换后的字符,用逗号隔开:");
scanf("%c,%c",&a,&b);
swap(s,a,b);
puts(s);
}

⑹ C语言中如何替换一个字符串中的字符

include
<stirng.h>
void
strrpl(char
*s,
const
char
*s1,
const
char
*s2)
{
char
*ptr;
while
(ptr
=
strstr(s,
s1))
/*
如果来在s中找到s1
*/
{
memmove(ptr
+
strlen(s2)
,
ptr
+
strlen(s1),
strlen(ptr)
-
strlen(s1)
+
1);
memcpy(ptr,
&s2[0],
strlen(s2));
}
return
s;
}
int
main()
{
char
*str1="abc",
*str2="a",
*str3="de",
Str0[100];
//如果字符自串很长,100不够则需要预留更大的空间。
strcpy(Str0,Str1);
strrpl(Str0,
str2,
str3);
printf("%s\n",
Str0);
return
0;
}

⑺ C语言字符串替换

char
*replace(char
*source,
char
*sub,
char
*rep)
{
char
*result;
/*pc1
是复制到结果result扫描指针*/
/*pc2
是扫描
source
辅助指针*/
/*pc3
寻找子串时,为检查变化中source是否和子串相等,是指向sub扫描指针
*/
/*找到匹配后,为了复制到结果串,是指向rep扫描指针*/
char
*pc1,
*pc2,
*pc3;
int
isource,
isub,
irep;
isub
=
strlen(sub);
/*对比串长度*/
irep
=
strlen(rep);
/*替换串长度*/
isource=
strlen(source);
/*源串长度*/
if(NULL==*sub)
return
strp(source);
/*申请结果串需要空间*/
result
=
(char
*)malloc(((irep>isub)?(float)strlen(source)/isub*irep+1:isource)*sizeof(char));
pc1
=
result;
/*为pc1依次复制结果串每个字节作准备*/
while(*source
!=
NULL)
{
/*为检查source和sub是否相等作准备,为pc2,pc3
赋初值*/
pc2
=
source;
pc3
=
sub;
/*
出循环(任)条件是:
*
*pc2
不等于
*pc3
(和子串不相等)
*
pc2
到源串结尾
*
pc3
到源串结尾
(此时,检查了全部子串,source处和sub相等)
*****************************************************/
while(*pc2==*pc3
&&
*pc3
!=
NULL
&&
*pc2
!=
NULL)
pc2++,
pc3;
/*
如果找到了子串,进行以下处理工作*/
if(NULL==*pc3)
{
pc3
=
rep;
/*将替代串追加到结果串*/
while(*pc3
!=
NULL)
*pc1
=
*pc3;
pc2--;
source
=
pc2;
/*
检查
source和sub相等循环结束后
*
pc2
对应位置是在
sub
中串结束符处该是源串中下个位置
*

source
指向其前面个
***************************************************/
}
/*如果没找到子串,下面复制source所指字节到结果串*/
*pc1
=
*source;
source;
/*
将source向后移个*/
}
*pc1
=
NULL;
result;
}

⑻ C语言字符串替换如何做

记得点赞:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void main()
{
char *p;
int i,j,k;
p=(char*)malloc(1001);
puts("输入字符串:");
gets(p);
i=strlen(p)-3;
for(j=0;j<=i;j++)
{
if(*(p+j)=='y'&&*(p+j+1)=='o'&&*(p+j+2)=='u'){
*(p+j)='w';
*(p+j+1)='e';
for(k=j+2;k<=i+2;k++)
*(p+k)=*(p+k+1);
}

else if(*(p+j)=='w'&&*(p+j+1)=='e'){
*(p+j)='y';
*(p+j+1)='o';
for(k=i+3;k>=j+2;k--)
*(p+k+1)=*(p+k);

*(p+j+2)='u'; }
}
printf("%s\n",p);
free(p);
}

⑼ c语言如何替换这个字符串

不需要替换啊,直接去掉字符串中的多余字符就行