c语言去掉逗号后的字符串,C语言求助,请问如果我用这样的函数缩短了字符串,如何把在缓存中的剩余字符串打印出来?...

C 语言规定字符串是“一串以 '\0' 结尾字符序列”。一般用字符数组来保存,数组中的字符自然是连续排列的,另外别忘了用 '\0' 结尾。

处理字符串的库函数都遵循这个逻辑。

fit 这个函数只是是在字符数组的相应位置中写入 '\0'。

比如 fit(msg, 38),就是把 mesg 字符串中的逗号改为 '\0'。这样后面 puts 在打印字符串时,打印到这个 '\0' 时就认为字符串结束了,于是原来逗号后面的部分就不会被打印出来。

后面 puts(mesg + 39),这是让 puts 从 mesg 字符串的“串首 + 39”这个位置开始打印。这是从原本的逗号后面开始打印,也就是跳过了前面写入的那个 '\0'。这样 puts 就从这里开始一直打印到原字符串的末尾。

那么关于你最后的问题

“fit将39后面的全部\0”:

你指的是这句 fit(msg, 38) 吗??  这并不是把第39个字符后面全部写 '\0' 啊! 这只是把第39个字符改为 '\0'。这对字符串的影响我在上面已经说过了。

“puts(mesg+8)可以打印出缓存中的内容吗”:

为什么要问 +8 ??  这当然能打印字符串。只不过是从 mesg 的“串首 + 8”这个位置(也就是第9个字符)开始打印。当然仍然是打印到 '\0' 为止,不管这个 '\0' 是不是在原本字符串的真正末尾。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值