linux字符串前7位,详解C语言在字符串的指定位置插入字符

问题描述请编写程序,实现以下功能:在字符串中的所有数字字符前加一个$字符。例如,输入 test1test2www.linuxidc.com3test35678 ,输出 test$1test$2www.linuxidc.com$3test$3$5$6$7$8。

d85a65eaf705f4ea51b439618554b7cf.png

问题分析

在字符串S的所有数字字符前加一个$字符,可以有两种实现方法。

方法一:用串S拷贝出另一个串T,对串T从头至尾扫描,对非数字字符原样写入串S,对于数字字符先写一个$符号再写该数字字符,最后,在S串尾加结束标志。使用此方法是牺牲空间,赢得时间。

方法二:对串S从头至尾扫描,当遇到数字字符时,从该字符至串尾的所有字符右移一位,在该数字字符的原位置上写入一个$。使用此方法是节省了空间,但浪费了时间。

本题采用方法一,下面是完整的代码:

#include

int fun(char *s)

{

char t[80];

int i, j;

for(i=0; s[i]; i++)  /*将串s拷贝至串t*/

t[i]=s[i];

t[i]='\0';

for(i=0,j=0; t[i]; i++)

/*对于数字字符先写一个$符号,再写该数字字符*/

if(t[i]>='0' && t[i]<='9')

{

s[j++]='$';

s[j++]=t[i];

}

/*对于非数字字符原样写入串s*/

else

s[j++]=t[i];

s[j]='\0';  /*在串s结尾加结束标志*/

return 0;

}

int main()

{

char s[80];

printf ( "Enter a string:" );

scanf ("%s", s);  /*输入字符串*/

fun(s);

printf ("The result: %s\n", s);  /*输出结果*/

return 0;

}

运行结果:

linuxidc@linuxidc:~$ ./linuxidc

Enter a string:test1test2www.linuxidc.com3test35678

The result: test$1test$2www.linuxidc.com$3test$3$5$6$7$8

linuxidc@linuxidc:~$ ./linuxidc

Enter a string:A1B2C5D7E8F9876518

The result: A$1B$2C$5D$7E$8F$9$8$7$6$5$1$8

0b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值