一世轻尘 发表于 2020-12-26 21:59:13

字符串反转

本帖最后由 一世轻尘 于 2020-12-26 22:09 编辑

#include<stdio.h>


char *reserve(char *str);
char *link(char *str1,char *str2);



int main()
{
        char a,b,*p;
        printf("请输入第一个字符串:\n");
        gets(a);
        printf("请输入第二个字符串:\n");
        gets(b);
        a=reserve(a);
        printf("%s",a);
        return 0;
       
}



char *reserve(char *str)
{
        char *p,*q,temp;
        p=str,q=str;
        while(*p!='\0')
                p++;
        p--;
        while(q<p)
        {
                temp=*q;
                *q=*p;
                *p=temp;
                p--;
                q++;
        }
        return str;       
}

风过无痕1989 发表于 2020-12-26 22:15:59

这一段程序是想将干啥?

风过无痕1989 发表于 2020-12-26 22:38:35

本帖最后由 风过无痕1989 于 2020-12-26 22:41 编辑

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

#include<stdio.h>

char reserve(char *str);
char *link(char *str1, char *str2);

int main()
{
        char a, b, *p;
        printf("请输入第一个字符串:\n");
        gets(a);
        printf("请输入第二个字符串:\n");
        gets(b);
        reserve(a);
        printf("%s", a);
        return 0;

}

char reserve(char *str)
{
        char *p, *q, temp;
        p = str, q = str;
        while (*p != '\0')
                p++;
        p--;
        while (q < p)
        {
                temp = *q;
                *q = *p;
                *p = temp;
                p--;
                q++;
        }
        return str;
}

一世轻尘 发表于 2020-12-26 23:19:03

风过无痕1989 发表于 2020-12-26 22:38
第十六行 a = reserve(a); 改为:reserve(a);   * reserve去掉 *

还是不行,函数*reserve应该不会错,书上是这么写的

一世轻尘 发表于 2020-12-26 23:21:05

风过无痕1989 发表于 2020-12-26 22:38
第十六行 a = reserve(a); 改为:reserve(a);   * reserve去掉 *

准确说这个程序和书上的应该说是一样,但是我的在这运行不了,可能支持c的标准不同,所以我想问应该要怎么改,我用的dev(程序用来实现字符串的反转)

风过无痕1989 发表于 2020-12-26 23:23:25

本帖最后由 风过无痕1989 于 2020-12-26 23:37 编辑

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

上面的程序已经可以反序了。DEV 是部份支持 C99 的,相反,我现在用的 VS2015 是不支持 C99 的

一世轻尘 发表于 2020-12-26 23:30:47

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

问题找到了,不能用字符指针给字符数组赋值,要用strcpy这个函数{:10_279:}

风过无痕1989 发表于 2020-12-26 23:36:24

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

DEV运行时去掉 最后那一条 return str; 原因是定义的是 char 类型的函数:char reserve(char *str),而一般地 char 类型的函数是不需要返回值的,只有 int 型需要

风过无痕1989 发表于 2020-12-26 23:40:29

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

不是的,你看我用 VS2015 和 DEV_C++ 两个软件运行的结果(两个结果放在同一张图里)

一世轻尘 发表于 2020-12-26 23:46:54

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

奇了怪了,你dev的那个程序我运行不了,但是在函数那加上个*就可以运行了

风过无痕1989 发表于 2020-12-26 23:55:27

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

加个 * 号,我的 DEV 也能运行,但 VS2015 不行

一世轻尘 发表于 2020-12-26 23:59:23

风过无痕1989 发表于 2020-12-26 23:55
加个 * 号,我的 DEV 也能运行,但 VS2015 不行

那应该是需要加的,可能是因为你的dev版本比我的高,所以加了c++的一些语法(我觉得是类似于引用之类的),dev我记得是兼容c89和c11标准的,vs好像只兼容c11,vs不能运行倒正常

一世轻尘 发表于 2020-12-27 00:02:18

风过无痕1989 发表于 2020-12-26 23:55
加个 * 号,我的 DEV 也能运行,但 VS2015 不行

我再研究研究吧,不过话说你从哪下载的DevC++5.71,分享一下呗

风过无痕1989 发表于 2020-12-27 00:07:37

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

你是多少版本?DEV_C++ 最高可是 5.11 哟~~

一世轻尘 发表于 2020-12-27 00:10:40

风过无痕1989 发表于 2020-12-27 00:07
你是多少版本?DEV_C++ 最高可是 5.11 哟~~

哎呀呀,我5.11,擦{:10_257:}
页: [1]
查看完整版本: 字符串反转