c语言中,如何实现程序替换功能?

c语言中,如何实现程序替换功能?,第1张

#include<stdio.h>

#include<string.h>

void main(){

int i

char str[100]="We will rock you"

printf("去掉空格,然后小写大写:")

for(i=0i<strlen(str)i++){

if((int)str[i]>=97&&(int)str[i]<=122){

str[i] = (char)((int)str[i]-32) //注意小写字母的ASCII码是在97-122之间,而大写字母的ASCII码是在65-90之间,对应的字母相差32

}

if((int)str[i]!=32){ //空格的ASCII码是32,去掉空格,肯定是不输出空格

printf("%c",str[i])

}

}

printf("\n")

printf("保留空格,然后小写转大写:")

for(i=0i<strlen(str)i++){

if((int)str[i]>=97&&(int)str[i]<=122){

str[i] = (char)((int)str[i]-32)

}

printf("%c",str[i]) //转成大写字母后 ,原样输出(字母是大写但是带空格的)

}

printf("\n")

}

#include <stdio.h>

#include <string.h>

void replace(char *s1,char *s2,char *str1,char *str2)

{

char *t0,*t1,*t2

while(*s1!='\0') //s1是否为空(空的话不执行下面过程)

{

t1=str1 //初始化t1,使其在每次循环时都是被替换字符串

if(*s1==*t1) //判断s1是否等于t1

{

/*此下for语句部分:从s1此时位置逐一检测到t1串结束,如果s1此后与t1等长部分与t1相同,则执行if语句,用t2替换t1*/

for(t0=s1,t1=str1(*t0==*t1&&*t1!='\0')t0++,t1++)

{

*s2++=*s1++ //先将s1所有内容赋给s2

//printf("%s\n",s2)

if(*(t1+1)=='\0') //在t1已经全赋给s2时

{

s2-=strlen(str1) //将s2定位到s2中的字符串t1首位

for(t2=str2*t2!='\0')

*s2++=*t2++ //用循环将t1替换为t2*****你没有对t2赋值

}

}

}

else

*s2++=*s1++ //如果没有检测到t1,正常从s1赋值给s2

}

*s2='\0' //s2末尾赋结束符

}

main()

{

static char s1[]="abcef ababcd abab"

static char s2[25]

replace(s1,s2,"abc","XYZ")

printf("%s\n",s2)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12153429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存