| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1113 人关注过本帖
标题:[求助] 请教各位大侠,我的 c 函数哪出问题了,总是有错误
只看楼主 加入收藏
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
结帖率:91.67%
收藏
已结贴  问题点数:11 回复次数:16 
[求助] 请教各位大侠,我的 c 函数哪出问题了,总是有错误
#include <string.h>
#include <stdio.h>

void strsplit(char *str, char *by, char *st[])
{
    int i=0, n=strlen(str);
    char *p;
    p = strtok(str, by);
    while (p != NULL)
    {
        strcpy(st[i], p);
        p = strtok(NULL, by);
    }               
    return;
}



void main( void )
{
    char *string = "y ~ sire + dam + herd + herd*dam, ~    litter + xran";
    char *seps = "+";
    char **token;
    char x[5][30];
    *token=x[0];
    int i=0;
    printf( "%s\n\nTokens:\n", string );

    strsplit(string, seps, token);

    for (i=0; i<5; i++)
    {
        printf( " %s\n", x[i] );
    }
}

搜索更多相关主题的帖子: 函数 
2010-11-25 10:18
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:2 
好像是主函数里要先声明 void strsplit(char *str, char *by, char *st[]); 这个吧.
2010-11-25 10:25
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:2 
程序代码:
void main( void )
{
    char *string = "y ~ sire + dam + herd + herd*dam, ~    litter + xran";
    char *seps = "+";
    char **token;
    char x[5][30];
    *token=x[0];                //这两行上下颠倒下  
    int i=0;                    //这两行上下颠倒下  
    printf( "%s\n\nTokens:\n", string );

    strsplit(string, seps, token);

    for (i=0; i<5; i++)
    {
        printf( " %s\n", x[i] );
    }
}
    *token=x[0];                //这两行上下颠倒下   
    int i=0;                    //这两行上下颠倒下   

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-11-25 10:36
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:0 
我拿gcc编译了,可以通过,就是运行时出错。估计是指针的问题。但不知问题在哪里。
2010-11-25 10:43
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
那你就加点脚手架,输出部分中间结果看看!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-11-25 10:45
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:0 
问题是编译后根本运行不了,会出错。
2010-11-25 10:59
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:2 
程序代码:
#include <string.h>
#include <stdio.h>

void strsplit(char *str, char *by, char (*st)[30])
{
    char *p;
    p = strtok(str, by);
    while (p != NULL)
    {
        strcpy(st, p);
        st++;
        p = strtok(NULL, by);
    }              

    return;
}



int
main( void )
{
    char *string = "y ~ sire + dam + herd + herd*dam, ~    litter + xran";
    char *seps = "+";
    char (*token)[30];
    char x[5][30];
    int i;
    token=x;

    i=0;
    printf( "%s\n\nTokens:\n", string );

    strsplit(string, seps, token);

    for (i=0; i<5; i++)
    {
        printf( " %s\n", x[i] );
    }
    getch();
    return 0;
}
好像失去通用性了,等让我再改改
2010-11-25 11:39
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:0 
对,好像运行时也会发生错误。
2010-11-25 11:45
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

不就是这样么,你还要什么效果?
2010-11-25 12:05
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:0 
我用gcc编译后可不是这个结果。不知为什么?你的结果是对的。
2010-11-25 12:23
快速回复:[求助] 请教各位大侠,我的 c 函数哪出问题了,总是有错误
数据加载中...
 
   



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

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