c语言中删除字符串中的特定字符的问题

古不古 2016-03-29 03:25:58


请教:为什么前两个实现不了删除特定字符的功能。最后一个可以?
或者说:后两个程序中。str1中的j,都是先用后加。在循环控制和循环内的结果就不一样,为什么呢?
可以详细讲解一下最好了^^
...全文
5547 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
D导演 2017-12-04
  • 打赏
  • 举报
回复 1
%c int c???
qq_37858942 2017-03-14
  • 打赏
  • 举报
回复
层主 这个问题我也不明白啊 你解释的我也没明白 能再给我详细讲讲吗
古不古 2016-03-29
  • 打赏
  • 举报
回复
有点不踏实感,刚梳理一下,现在清晰了。谢楼上
小灸舞 版主 2016-03-29
  • 打赏
  • 举报
回复
引用 6 楼 qq_28840093 的回复:
再回三楼。dev c++对于字符的类型没有特别要求,用int 和char一样。c-free里更改成char,就可以了。都是试验,不敢相信,需要权威哎--。
所以是OK了么?
古不古 2016-03-29
  • 打赏
  • 举报
回复
再回三楼。dev c++对于字符的类型没有特别要求,用int 和char一样。c-free里更改成char,就可以了。都是试验,不敢相信,需要权威哎--。
小灸舞 版主 2016-03-29
  • 打赏
  • 举报
回复
引用 4 楼 qq_28840093 的回复:
弄不来调试。手写步骤,明白楼上这句话【str1的下标不应该变,否则str1这个位置也同样跳过了】的意思了。那第三个应该是对的呀。比如:are you all right? 输入r。第一步:str[0]->str1[0] = a ,j++为1,i++为1. 第二步:str[1]=r,跳过,i++为2,j仍然为1.第三步。这样试数,好像没什么地方不对。在dev c++中确实实现了。可是在c-free中没有变动。还是迷糊..
楼主的你的int c改为char c没,如果是int c的话我这里VS也得不到正确结果
古不古 2016-03-29
  • 打赏
  • 举报
回复
弄不来调试。手写步骤,明白楼上这句话【str1的下标不应该变,否则str1这个位置也同样跳过了】的意思了。那第三个应该是对的呀。比如:are you all right? 输入r。第一步:str[0]->str1[0] = a ,j++为1,i++为1. 第二步:str[1]=r,跳过,i++为2,j仍然为1.第三步。这样试数,好像没什么地方不对。在dev c++中确实实现了。可是在c-free中没有变动。还是迷糊..
小灸舞 版主 2016-03-29
  • 打赏
  • 举报
回复
楼主的第一和第二个是一样的效果,i和j的值在每次循环里都是一样的值。。。。换汤不换药啊。。。 第三个可以是因为,你应该跳过str里等于c的字符,而此时str1的下标不应该变,否则str1这个位置也同样跳过了(之前存着什么就是什么,如果没有清零那么将会是垃圾值) 楼主这里第三个运行是正确的么?我这里VC编译器是不行的 应该要将int c;改成char c; 而且char str1[100];改为char str1[100] = {0};否则数组没有\0结尾会输出很多个垃圾字符来
古不古 2016-03-29
  • 打赏
  • 举报
回复
.................dev c++单步调试用不了,在下其他编译器。等下试试吧
paschen 2016-03-29
  • 打赏
  • 举报
回复
建议单步跟踪程序运行,每一步观察各变量怎么变化的

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧