| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 333 人关注过本帖
标题:继续K&R的练习疑惑。。。CP木有解决掉,希望bccn的大家能够帮忙看下
只看楼主 加入收藏
stupidsteve
Rank: 1
来 自:赛博坦星
等 级:新手上路
帖 子:18
专家分:3
注 册:2011-4-8
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
继续K&R的练习疑惑。。。CP木有解决掉,希望bccn的大家能够帮忙看下
还是在做K&R的练习题

其中在调用这个function的时候每每出错,虽然compile的过程没有一点问题。。。

/*printarray function*/
void printarray (int temp[], int digitnumber)
{
    int i;

    for(i=0; digitnumber>0; --digitnumber)
    {
        putchar(temp[i]);
        ++i;
    }
    printf("\n");
}

错误都是“Access violation...”看来应该是数据地址的问题。。。

把整段code都贴出来,希望各位能够帮我看下到底是哪里出了问题。。。

PS, 麻烦请不要说“初始化为毛不用pointer啊你。。。”,我就是想做个基础练习然后每每都失败的苦逼一枚。。。

#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 100000

void printarray (int temp[], int digitnumber);


main()
 {
    int digit, temp[MAXLINE];
    int nd,i ;

    nd=digit=0;
    for(i=0; i<MAXLINE; ++i)
    {
        temp[i]=0;
    }

    while((nd=getchar())!=EOF)
    {
        if(nd!='\n')
        {
            temp[digit]=nd;
            ++digit;
        }
        else
        {
            printarray(temp, digit);
        }
    }
    return 0;
}

/*printarray function*/
void printarray (int temp[], int digitnumber)
{
    int i;

    for(i=0; digitnumber>0; --digitnumber)
    {
        putchar(temp[i]);
        ++i;
    }
    printf("\n");
}

先谢谢大家喽~

[ 本帖最后由 stupidsteve 于 2011-4-10 21:45 编辑 ]
搜索更多相关主题的帖子: function 练习题 
2011-04-10 21:43
pkwangxinjun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:170
注 册:2010-8-29
收藏
得分:7 
这个程序正确着呢  请把错误信息说清楚
2011-04-10 22:42
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:7 
请你认真的考虑一下,不要再用 VS 了
楼下说的对

程序代码:
#include <stdio.h>

#define MAXLINE 100000

/*printarray function*/
void printarray (char temp[], int digitnumber) {
    int i;

    for(i=0; digitnumber>0; --digitnumber) {
        putchar(temp[i]);
        ++i;
    }
    printf("\n");
}

int main() {
    int i, digit;
    char temp[MAXLINE], nd;

    nd=digit=0;
    for(i=0; i<MAXLINE; ++i) {
        temp[i]=0;
    }

    while((nd=getchar())!=EOF) {
        if(nd!='\n') {
            temp[digit]=nd;
            ++digit;
        }
        else {
            printarray(temp, digit);
        }
    }
    return 0;
}


[ 本帖最后由 voidx 于 2011-4-10 23:51 编辑 ]
2011-04-10 23:43
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:7 
char nd;

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-10 23:48
stupidsteve
Rank: 1
来 自:赛博坦星
等 级:新手上路
帖 子:18
专家分:3
注 册:2011-4-8
收藏
得分:0 
回复 3楼 voidx
后来我把调用两个函数的变量由temp[]改变为了temp,通过单纯调用首地址就能够成功了:)

谢谢你啦~

PS,为啥不用VS了呢?我怎么觉得还算不错。。。。

How can we win, when fools can be kings?
2011-04-11 09:44
快速回复:继续K&R的练习疑惑。。。CP木有解决掉,希望bccn的大家能够帮忙看下 ...
数据加载中...
 
   



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

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