鱼C论坛

 找回密码
 立即注册
查看: 1020|回复: 14

[已解决]字符串反转

[复制链接]
发表于 2020-12-26 21:59:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 一世轻尘 于 2020-12-26 22:09 编辑
  1. #include<stdio.h>


  2. char *reserve(char *str);
  3. char *link(char *str1,char *str2);



  4. int main()
  5. {
  6.         char a[50],b[50],*p;
  7.         printf("请输入第一个字符串:\n");
  8.         gets(a);
  9.         printf("请输入第二个字符串:\n");
  10.         gets(b);
  11.         a=reserve(a);
  12.         printf("%s",a);
  13.         return 0;
  14.        
  15. }



  16. char *reserve(char *str)
  17. {
  18.         char *p,*q,temp;
  19.         p=str,q=str;
  20.         while(*p!='\0')
  21.                 p++;
  22.         p--;
  23.         while(q<p)
  24.         {
  25.                 temp=*q;
  26.                 *q=*p;
  27.                 *p=temp;
  28.                 p--;
  29.                 q++;
  30.         }
  31.         return str;       
  32. }
复制代码
最佳答案
2020-12-26 23:23:25
本帖最后由 风过无痕1989 于 2020-12-26 23:37 编辑
一世轻尘 发表于 2020-12-26 23:21
准确说这个程序和书上的应该说是一样,但是我的在这运行不了,可能支持c的标准不同,所以我想问应该要怎 ...


上面的程序已经可以反序了。DEV 是部份支持 C99 的,相反,我现在用的 VS2015 是不支持 C99 的
7.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-26 22:15:59 | 显示全部楼层
这一段程序是想将干啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-26 22:38:35 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-26 22:41 编辑

第十六行 a = reserve(a); 改为:reserve(a);   * reserve  去掉 *

  1. #include<stdio.h>

  2. char reserve(char *str);
  3. char *link(char *str1, char *str2);

  4. int main()
  5. {
  6.         char a[50], b[50], *p;
  7.         printf("请输入第一个字符串:\n");
  8.         gets(a);
  9.         printf("请输入第二个字符串:\n");
  10.         gets(b);
  11.         reserve(a);
  12.         printf("%s", a);
  13.         return 0;

  14. }

  15. char reserve(char *str)
  16. {
  17.         char *p, *q, temp;
  18.         p = str, q = str;
  19.         while (*p != '\0')
  20.                 p++;
  21.         p--;
  22.         while (q < p)
  23.         {
  24.                 temp = *q;
  25.                 *q = *p;
  26.                 *p = temp;
  27.                 p--;
  28.                 q++;
  29.         }
  30.         return str;
  31. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-26 23:19:03 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 22:38
第十六行 a = reserve(a); 改为:reserve(a);   * reserve  去掉 *

还是不行,函数*reserve应该不会错,书上是这么写的
9.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-26 23:21:05 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 22:38
第十六行 a = reserve(a); 改为:reserve(a);   * reserve  去掉 *

准确说这个程序和书上的应该说是一样,但是我的在这运行不了,可能支持c的标准不同,所以我想问应该要怎么改,我用的dev(程序用来实现字符串的反转)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-26 23:23:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-26 23:37 编辑
一世轻尘 发表于 2020-12-26 23:21
准确说这个程序和书上的应该说是一样,但是我的在这运行不了,可能支持c的标准不同,所以我想问应该要怎 ...


上面的程序已经可以反序了。DEV 是部份支持 C99 的,相反,我现在用的 VS2015 是不支持 C99 的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-26 23:30:47 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 23:23
上硕的程序已经可以反序了。DEV 是部份支持 C99 的,相反,我现在用的 VS2015 j不支持 C99 的

问题找到了,不能用字符指针给字符数组赋值,要用strcpy这个函数
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-26 23:36:24 | 显示全部楼层
一世轻尘 发表于 2020-12-26 23:21
准确说这个程序和书上的应该说是一样,但是我的在这运行不了,可能支持c的标准不同,所以我想问应该要怎 ...

DEV运行时去掉 最后那一条 return str; 原因是定义的是 char 类型的函数:char reserve(char *str),而一般地 char 类型的函数是不需要返回值的,只有 int 型需要
反序.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-26 23:40:29 | 显示全部楼层
一世轻尘 发表于 2020-12-26 23:30
问题找到了,不能用字符指针给字符数组赋值,要用strcpy这个函数

不是的,你看我用 VS2015 和 DEV_C++ 两个软件运行的结果(两个结果放在同一张图里)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-26 23:46:54 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 23:40
不是的,你看我用 VS2015 和 DEV_C++ 两个软件运行的结果(两个结果放在同一张图里)


奇了怪了,你dev的那个程序我运行不了,但是在函数那加上个*就可以运行了
1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-26 23:55:27 | 显示全部楼层
一世轻尘 发表于 2020-12-26 23:46
奇了怪了,你dev的那个程序我运行不了,但是在函数那加上个*就可以运行了

加个 * 号,我的 DEV 也能运行,但 VS2015 不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-26 23:59:23 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 23:55
加个 * 号,我的 DEV 也能运行,但 VS2015 不行

那应该是需要加的,可能是因为你的dev版本比我的高,所以加了c++的一些语法(我觉得是类似于引用之类的),dev我记得是兼容c89和c11标准的,vs好像只兼容c11,vs不能运行倒正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 00:02:18 | 显示全部楼层
风过无痕1989 发表于 2020-12-26 23:55
加个 * 号,我的 DEV 也能运行,但 VS2015 不行

我再研究研究吧,不过话说你从哪下载的DevC++5.71,分享一下呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-27 00:07:37 | 显示全部楼层
一世轻尘 发表于 2020-12-27 00:02
我再研究研究吧,不过话说你从哪下载的DevC++5.71,分享一下呗

你是多少版本?DEV_C++ 最高可是 5.11 哟~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 00:10:40 | 显示全部楼层
风过无痕1989 发表于 2020-12-27 00:07
你是多少版本?DEV_C++ 最高可是 5.11 哟~~

哎呀呀,我5.11,擦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-20 02:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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