鱼C论坛

 找回密码
 立即注册
查看: 6778|回复: 23

关于字符串中间插入空格

[复制链接]
发表于 2013-4-20 00:04:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 喜欢散步 于 2013-4-20 00:06 编辑

下面是我写的程序,目的是这样:
当输入
ABCD时
输出为
A B C D
就是在字符中插入空格, 好像运行不正确啊, 找不出哪里错了,,,,以下是源码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define LEN 100
  4. int main()
  5. {
  6.         char str[LEN];
  7.         int str_len;
  8.         printf("请输入一个字符串:");
  9.         scanf("%s", str);        
  10.         fflush(stdin);                //清除多余的字符
  11.         str_len = strlen(str); //求字符串长度
  12.         --str_len;
  13.         for(;str_len > 0; --str_len)
  14.         {
  15.                 str[2*str_len] = str[str_len];
  16.                 str[2*str_len-1] = ' ';
  17.         }
  18.         printf("%s\n", str);
  19.         
  20.         return 0;
  21. }
复制代码


QQ截图20130420000335.png

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 05:00:25 | 显示全部楼层
逻辑错
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define LEN 100
  4. int main()
  5. {
  6.         char str[LEN];
  7.         int str_len,i;
  8.         printf("请输入一个字符串:");
  9.         scanf("%s", str);        



  10.         for(i=0;str[i] != '\0' ;i+=2 )
  11.         {
  12.                             str_len = strlen(str); //求字符串长度
  13.                                 while(i < str_len)        //字符往后移1位
  14.                                 {
  15.                                         str[str_len+1] = str[str_len];
  16.                                         str_len--;
  17.                                 }

  18.                 str[str_len+1] = ' ';
  19.         }
  20.         printf("%s\n", str);
  21.         
  22.         return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 06:00:35 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 08:32:33 | 显示全部楼层
scanf语句再输入字符串的时候遇到空格表示输入结束
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 09:24:18 | 显示全部楼层
感恩无私的分享与奉献 :)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 09:38:21 | 显示全部楼层
本帖最后由 comethat 于 2013-4-20 09:39 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define LEN 100

  4. void main()
  5. {
  6.         int i;
  7.         char str[LEN];
  8.         printf("请输入字符串:\n");
  9.         scanf("%s",&str);

  10.         for(i=0;i<strlen(str);i++)
  11.         {
  12.                 printf("%c ",str[i]);
  13.         }

  14.         printf("\n");
  15. }
复制代码
太简单了,问题被你复杂化
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 09:43:51 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 10:06:22 | 显示全部楼层
激动人心,无法言表!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 10:45:05 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 12:02:18 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 12:48:37 | 显示全部楼层
  1. 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 12:49:17 | 显示全部楼层
本帖最后由 逍遥·小峰 于 2013-4-20 13:21 编辑









~~~~~~~~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 15:07:00 | 显示全部楼层
逻辑错误!!!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-20 15:57:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-20 16:06:04 | 显示全部楼层

你这个正确了。 不过, 你能指出一下我上面的程序哪里出错吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 16:19:02 | 显示全部楼层
喜欢散步 发表于 2013-4-20 16:06
你这个正确了。 不过, 你能指出一下我上面的程序哪里出错吗?

字符串结尾 '\0'
这个是常识
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-20 16:19:54 | 显示全部楼层

楼主逻辑没错 细节不好
你的做法 不如楼主
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-20 16:23:50 | 显示全部楼层
谢谢大家, 我把程序改成这样, 就奇迹地运行成功了..
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define LEN 100
  4. int main()
  5. {
  6.         char str[LEN];
  7.         int str_len;
  8.         printf("请输入一个字符串:");
  9.         scanf("%s", str);        
  10.         //字符串会有一个结束标志'\0', 存放在字符串后面
  11.         fflush(stdin);                //清除多余的字符
  12.         str_len = strlen(str); //求字符串长度
  13.         for(;str_len > 0; --str_len)
  14.         {
  15.                 str[2*str_len] = str[str_len];
  16.                 str[2*str_len-1] = ' ';
  17.         }
  18.         printf("%s\n", str);
  19.         
  20.         return 0;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-21 03:29:44 | 显示全部楼层
喜欢散步 发表于 2013-4-20 16:06
你这个正确了。 不过, 你能指出一下我上面的程序哪里出错吗?

多打了行 --str_len;
假设输入abcd,内存是这样的
[ 0 ] -> a   [ 1 ] -> b   [ 2 ] -> c   [ 3 ]-> d   [ 4 ] -> '\0'
strlen返回的是4,你把他减了就是把'\0'给扔了,字符串没法正常输出。

至于把你第十几行的代码换了下,个人喜好:P
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-21 03:52:46 | 显示全部楼层
我是师兄 发表于 2013-4-20 16:19
楼主逻辑没错 细节不好
你的做法 不如楼主

哦,这个啊,对于这问题是楼主算法好。
不过最近我在自学 “C程序设计语言(K&R)”,里面习题刁钻啊!非要你在符合条件下删个字符什么的,不像楼主的这么有规律的,然后就自然而然的习惯了我这个的加个空格的做法咯。:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-2 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表