在 C语言中字符串的替换如何实现的!
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、这样就完成了。
#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;
}
高手 留步!请问可否在此程序的基础上将句子中的 “am ”换成“by”呢??
可以使用strstr函数查找am。。找到后会返回AM字串第一次出现的位置。。然后替换就行了。使用STRCPY的话可能会拷贝到字符串"BY\0" 的结束附。。可以考虑挨个赋值或者是单独对结束符进行处理。
#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();
}
用strcpy函数
大哥 可否在原程序上修改呢