| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:自学指针,试了半天,效果不理想,求助
只看楼主 加入收藏
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:11 
自学指针,试了半天,效果不理想,求助
#include<stdio.h>
#include<string.h>
int main ( )
{
    int i;
    char a[50],n=0;
    printf("输入一串数字:");
    scanf("%s",&a);
    dy(a);
    printf("得出结果:%s",a);

    return 0;
}
int dy(char*a)
{
    int len=0,i,j;
    char *p=a,c;
    while(*p)p++,len++;
    p=a;
    for(i=0,j=len-1;i<j;i++,j--)
        c=p[i],p[i]=p[j],p[j]=c;
    return  a;
}
效果:按0结束输;例:输入5 6 9 8 0 得到 8 9 6 5 (字符间带空格的呦~~);
谢谢各位了!!
搜索更多相关主题的帖子: include return 
2012-12-09 15:17
wanjiawei
Rank: 4
等 级:业余侠客
帖 子:61
专家分:213
注 册:2012-11-16
收藏
得分:0 
 while(*p){p++,len++;}
2012-12-09 15:41
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
LZ 得仔细看看书.....scanf("%s",&a)??????

再则,不知道LZ是否知道字符中的 '0' 和 int 中的0 有什么不一样???? 字符串是以什么方式结束???....

感觉LZ 还没有将基本的知识搞懂......指针是c的难点...加油!!!!
2012-12-09 15:58
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
#include<stdio.h>
#include<string.h>

void dy(char*a);//函数声明,或把调用的函数放到main之前

int main ( )
{

    char a[50],n=0;
    printf("输入一串数字:");
    scanf("%s",&a);
    dy(a);
   

    return 0;
}
void dy(char*a)
{
    int len=0,i,j;
    char *p=a,c;
    while(*p)p++,len++;
    p=a;
    for(i=0,j=len-1;i<j;i++,j--)
        c=p[i],p[i]=p[j],p[j]=c;
     printf("得出结果:%s\n",a);
}
不带空格的


不懂你的while(*p)p++,len++;请解释解释
2012-12-09 19:45
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
while(*p)p++,len++;
可以用strlen代替把
2012-12-09 19:58
蔡明耀
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2012-12-8
收藏
得分:0 
回复 3楼 爱闹的娃
我们老师也说了指针有难度 .. 但我想知道它能干什么 能帮我们方便的去处理什么。。
大一的新手 学的计算机专业。。谢谢赐教
2012-12-09 21:48
ltianc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:128
注 册:2012-10-16
收藏
得分:0 
回复 6楼 蔡明耀
指针是c语言的核心,也是他的独到之处。

世界等我去改变。
2012-12-09 23:04
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<string.h>
#include <stdlib.h>

void dy(char*a);  //应申明函数

int main ( )
{
    char a[50];
    printf("输入一串数字:");
    fgets(a,sizeof a,stdin);  //不能用scanf读取,因为它一碰到空格就结束字符串类型的读入
    a[strlen(a)-1] = '\0';
    dy(a);
    printf("得出结果:%s",a);
    printf("\n");
    return 0;
}

//在这里改了很多,具体没有说明,自己先看看吧
void dy(char a[])
{
    int i=0;
    char *temp = (char*)malloc(sizeof a);

    strcpy(temp,a);
   while((int)(strlen(temp)-2-i) >= 0)
       a[i++] = temp[strlen(temp)-2-i];

   a[i] = '\0';

   return;
}


中间的strlen问题我自己还花了30分去问,郁闷啊....

I have not failed completely
2012-12-09 23:08
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
while((int)(strlen(temp)-2-i) >= 0)
        a[i++] = temp[strlen(temp)-2-i];
能解释是一下这句吗?
2012-12-10 08:48
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:10 
程序代码:
temp[strlen(temp)-2-i]  //strlen(temp)-1找到了最后一个可读字符,而不能将0读入,所以跳过0的索引值,故-2
/*-i,每读一个字符就要往前退一个,从而读入下一个字符,而i也对应a,故选i*/

/*如果((int)(strlen(temp)-2-i)返回的数值小于0,就说明所有字符以复制完,没有字符可以复制*/
while((int)(strlen(temp)-2-i) >= 0)
/*因为strlen()返回的类型为size_t类型,所以没有负数,这样就不会小于0,从而产生错误*/
/*故将它转换为int类型*/

I have not failed completely
2012-12-10 18:49
快速回复:自学指针,试了半天,效果不理想,求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017967 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved