鱼C论坛

 找回密码
 立即注册
查看: 1961|回复: 7

字符倒序

[复制链接]
发表于 2015-11-16 21:30:01 | 显示全部楼层 |阅读模式
10鱼币
输入一个字符串,要求输出倒序,使用指针。
# include <stdio.h>
# include <string.h>
main()
{
        int a,c;
        char str[100],*p;
        scanf("%d",&a);
        getchar();

                gets(str);
                c=strlen(str);
                for(p=str+c;c != 0;c--)
                {
                        printf("%c",*p);
                }

}

问题发现:发现最后的指针循环输出,根本没有效果,为什么。c不是--了吗?但是输出了一样的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 21:30:02 | 显示全部楼层
本帖最后由 machimilk 于 2015-11-16 22:15 编辑
#include <stdio.h>
#include <string.h>
int main()
{
        int c;
        char str[100],*p;
        scanf("%s",&str);
        c=strlen(str);//比如输入1234567,在内存中是31(str首地址) 32 33 34 35 36 37 00(也就是\0)
        for(p=str;c > 0;c--)//指针指向str首地址也就是1234567中的1
        {
                printf("%c",*(p+c-1));//c是7个字符的长度,那么p+7就指向了结尾的\0,所以要往回修正1个地址
        }
        printf("\r\n");//换行
        system("pause");

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 21:57:40 | 显示全部楼层
你的七八行代码我没看懂有什么用?不过你说的“输出了一样的值”,我知道为什么,for循环p=str+c付值后p指针地址没变,c的改变只是结束了循环,并没有对指针p做出改变,所以输出没变。你需要再循环里对p进行改变,没上机,只是说说,希望对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-16 22:05:27 | 显示全部楼层
浮云骑士 发表于 2015-11-16 21:57
你的七八行代码我没看懂有什么用?不过你说的“输出了一样的值”,我知道为什么,for循环p=str+c付值后p指 ...

7行代码,输入后回车,8行代码把 回车给获取了,要不然程序会直接结束。还有为什么p的值没有变,不是通过--c来改变p的地址了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-16 22:14:08 | 显示全部楼层

谢谢了,学习了,原来是这样改变,但是为什么我那样写,p的指向不会变呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 22:18:03 | 显示全部楼层
独一无② 发表于 2015-11-16 22:14
谢谢了,学习了,原来是这样改变,但是为什么我那样写,p的指向不会变呢。

你看你的循环条件
for(p=str+c;c != 0;c--)

p直接指向了str+c(c是字符串长度),那么正好指向的\0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 22:18:39 | 显示全部楼层
独一无② 发表于 2015-11-16 22:14
谢谢了,学习了,原来是这样改变,但是为什么我那样写,p的指向不会变呢。

你看你的循环条件
for(p=str+c;c != 0;c--)

p直接指向了str+c(c是字符串长度),那么正好指向的\0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-16 22:19:42 | 显示全部楼层
machimilk 发表于 2015-11-16 22:18
你看你的循环条件
for(p=str+c;c != 0;c--)

还有我发现我的这个循环,根本不能循环,输出都是一样的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 13:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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