在 C语言中字符串的替换如何实现的!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 C语言中字符串的替换如何实现的!相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
void main()

char i;
char a[]="i am a student";
for(i=0;a[i]!='\0';i++)

if(a[i]=='a')
a[i]='b';


printf("%s\n",a);
这个程序只能完成单个字母的替换,怎么才能实现某个单词的替换呢???
请高手们 在原程序的基础上修改!晚辈是初出茅庐,对一些函数的使用还有所不知,多谢赐教!!

1、首先输入代码:

#include <string.h>

#include <stdio.h>

 

/**

 * 参数:

 * originalString[] :原始字符串

 * key[] : 待替换的字符串

 * swap[] : 新字符串

 */

void replace(char originalString[], char key[], char swap[])

int lengthOfOriginalString, lengthOfKey, lengthOfSwap, i, j , flag;

char tmp[1000]; 

 

2、然后输入:

//获取各个字符串的长度

lengthOfOriginalString = strlen(originalString);

lengthOfKey = strlen(key);

lengthOfSwap = strlen(swap);

 

for( i = 0; i <= lengthOfOriginalString - lengthOfKey; i++)

flag = 1;

//搜索key

for(j  = 0; j < lengthOfKey; j ++)

if(originalString[i + j] != key[j])

flag = 0; 

break;

3、然后输入:

//如果搜索成功,则进行替换

if(flag)

strcpy(tmp, originalString);

strcpy(&tmp[i], swap);

strcpy(&tmp[i + lengthOfSwap], &originalString[i  + lengthOfKey]);

strcpy(originalString, tmp);

i += lengthOfSwap - 1;

lengthOfOriginalString = strlen(originalString);

 4、然后输入:

/**

 * main function

 */

int main() 

char originalString[1000] = "abcfffffabcfffffabcfffff";

char key[] = "abc";

char swap[] = "aabbcc"; 

replace(originalString, key, swap);

printf("%s\\n", originalString); 

return 0;

5、这样就完成了。

参考技术A #include <stdio.h>
#include <string.h>
#include <malloc.h>

// 将strRes中的t替换为s,替换成功返回1,否则返回0。
int StrReplace(char strRes[],char from[], char to[]) 
int i,flag = 0;
char *p,*q,*ts;
for(i = 0; strRes[i]; ++i) 
if(strRes[i] == from[0]) 
p = strRes + i;
q = from;
while(*q && (*p++ == *q++));
if(*q == '\\0') 
ts = (char *)malloc(strlen(strRes) + 1);
strcpy(ts,p);
strRes[i] = '\\0';
strcat(strRes,to);
strcat(strRes,ts);
free(ts);
flag = 1;



return flag;


int main() 
char str[80] = "098123asd098opu";
printf("替换前:%s\\n",str);
if(StrReplace(str,"098","33210")) printf("替换后:%s\\n",str);
else printf("没有任何替换。\\n");
return 0;

参考技术B 原理相同。。找到关键字词。。可以使用strstr()库函数。。使用STRCPY替换函数。。但是要考虑替换单词长度和被替换单词长度。。做好其他字符串的移位和字符串长度变化的空间分配与回收。追问

高手 留步!请问可否在此程序的基础上将句子中的 “am ”换成“by”呢??

追答

可以使用strstr函数查找am。。找到后会返回AM字串第一次出现的位置。。然后替换就行了。使用STRCPY的话可能会拷贝到字符串"BY\0" 的结束附。。可以考虑挨个赋值或者是单独对结束符进行处理。

本回答被提问者采纳
参考技术C 就是复杂了点:
#include<stdio.h>
#define N 100
void main()

char a[N]="abcdefg";
char b;
char c[N];
char d[N];
int i,j,k;
printf("输入要插入的字符串:\n");
gets(c);
printf("要插入的位置:\n");
scanf("%s",&b);
for(i=0;a[i]!='\0';i++)

if(a[i]==b)

k=i+1;
break;


for(j=0;a[i]!='\0';j++,i++)

d[j]=a[i+1];

d[j]='\0';
for(i=k,j=0;c[j]!='\0';i++,j++)

a[i]=c[j];

for(k=0;d[k]!='\0';k++)

a[i++]=d[k];

a[i]='\0';
printf("结果是:\n");
puts(a);
getch();


参考技术D #include<string.h>
用strcpy函数追问

大哥 可否在原程序上修改呢

c语言 把某一字符串中的其中一段字符串替换成另一串字符串。

例如原字符串为“abcdef”,将其中的“bc”换成“xy”,怎么实现?

这个写一个算法吧,搜索字符串,寻找"b",找到后判断b的后一个字符是否为"c",如果不是c,则继续搜索直到字符串结束,如果为c,那么将bc替换为xy。 参考技术A #include
<stdio.h>
#include
<string.h>
void
main(void)

char
getstr[100];
char
sendstr[100];
char
a_b[100];
char
i;
printf("please
input
the
firs
str!\n");
gets(getstr);
printf("please
input
the
second
str
!\n");
gets(sendstr);
strcpy(a_b,getstr);
//交换两个字符串的数据
strcpy(getstr,sendstr);
strcpy(sendstr,a_b);
for(i
=
0;
getstr
!=
'\0';
i++)

printf("str1:%c",getstr[i]);

for(i
=
0;
getstr
!=
'\0';
i++)

printf("str2:%c",sendstr[i]);


这是将两个字符串进行交换后输出。
第二个问题则用到了数据结构了,使用一个结构体链表,使用strcmp()或strcmpi()比对你输入的字符串,找到相同的输出对应的中文字符串就好了。
其中:
strcmp()
对两个字符串进行大小写敏感的比较;strcmpi()
对两个字符串进行大小写不敏感的比较;
参考技术B char a[]="abcdef";
char *q=strstr(a,"bc");
strncpy(q,"xy",2);
puts(a);
参考技术C char str[]="abcdef";
str[1]='x';
str[2]='y';
参考技术D 我不会

以上是关于在 C语言中字符串的替换如何实现的!的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何实现分割字符串为一个个单独的字符并保存

C语言问题 字符(串)替换

C++如何实现递增字符串。就是输入一个字符(整行)然后以01 02

c语言 如何实现字符串由右向左读取且删除指定字符之前的所有字符?

c语言 把某一字符串中的其中一段字符串替换成另一串字符串。

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