#include<string.h>
void main(){
int i
char str[100]="We will rock you"
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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)