当前位置:  技术问答>linux和unix

找不到错误~~~~~用字符指针传递变量

    来源: 互联网  发布时间:2016-07-28

    本文导语:  #include         #include         #include         struct filelist {         char* filename;         struct filelist* next; }; char filename[10]="./test"; static void read_filelist( struct filelist* list_head, char* target); int main() {  ...

#include        
#include        
#include        


struct filelist
{
        char* filename;
        struct filelist* next;
};

char filename[10]="./test";

static void read_filelist( struct filelist* list_head, char* target);


int
main()
{
        struct filelist* list_head;
        char*   dest = (char*)0;

        struct filelist* this_node;

        read_filelist(list_head, dest);
        printf("target_path=%s n", dest);
        this_node = list_head ->next;

        while(this_node-> next != NULL)
        {
                printf("filename on the filelist:%sn", this_node->filename);
                this_node = this_node->next;
        }
        printf("targetpath :%sn", dest);
        printf("OK!");
}


static  void
read_filelist(struct filelist* list_head, char* target)
{
        FILE* fp;
        char line[10000];
        char* cp;
        char* cp2;
        char* name;
        char* value;
        struct filelist* this_one;

        char*   target_path;

        this_one = (struct filelist*) malloc(sizeof(struct filelist));
        list_head->next = this_one;

        fp = fopen( filename, "r" );
        if ( fp == (FILE*) 0 )
        {
                perror( filename );
                exit( 1 );
        }

        while ( fgets( line, sizeof(line), fp ) != (char*) 0 )
        {
                if ( ( cp = strchr( line, '#' ) ) != (char*) 0 )
                        *cp = '';

                cp = line;
                cp += strspn( cp, " t1215" );

                printf("line:%sn",line);
                printf("line:%d,%d,%dn",line[1],line[2],line[3]);

                while ( *cp != 0 )
                {
                        cp2 = cp + strcspn( cp, " t1215" );

                        while ( *cp2 == ' ' || *cp2 == 't' || *cp2 == '12' || *cp2 == '15' )
                                *cp2++ = '';

                        name = cp;
                        if( (value = strchr( name, ':' ) ) == NULL)
                                break;
                        *value = '';
                        value ++;

                        if(strcmp(name, "filelist") == 0)
                        {
                                while( value != (char*)0 && strcmp(value, "endfilelist"))
                                {
                                        cp2 = strchr (value, ';');
                                        *cp2 = '';

                                        this_one->next =(struct filelist*)malloc(sizeof(struct filelist));
                                        this_one->filename =(char*)malloc(strlen(value) + 1);
                                        strcpy(this_one->filename,value);
                                        printf("value:%sn",value);

                                        value = cp2 + 1;
                                        this_one->next->next = NULL;
                                        this_one = this_one->next;
                                }
                                cp = value + sizeof("endfilelist");
                        }
                        else if(strcmp(name, "target") == 0)
                        {
                                cp2 = strchr (value,';');
                                *cp2 = '';
                                target_path = (char*) malloc(strlen(value) + 1);
                                if(target_path != NULL)
                                {
                                        strcpy(target_path, value);
                                        printf("target_path=%sn",target_path);
                                }
                                else
                                        printf("malloc failed!n");
                                cp = cp2 + sizeof("endtarget") + 1;
                        }
                }

        }
        target = target_path;
}


我哭了,单步调试,函数最后执行的时候target_path的值还是正确的;可一出函数就编程NULL了。。。为什么啊?哪位大虾帮着看看,谢谢

test的内容
filelist:ems;e2m;e2u;endfilelist
filelist:ems;e2m;e2u;endfilelist
target:testdir;endtarget

|
最简单的C语言知识,传值还是传引用,你这里传值想把值带出来怎么行呢?

|
struct filelist
{
        char* filename;
        struct filelist* next;
};

struct filelist* list_head;

struct filelist* this_node;

       
   this_node = list_head ->next;
-----------------
struct filelist
{
        char* filename;
        struct filelist* next;
}; 里面根本没有next 成员啊

|
不好意思 看错了
在看看

    
 
 

您可能感兴趣的文章:

  • dlsym 找不到函数指针?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我的系统看不到shell,home变量?
  • 为何得不到servlet初始化变量名?
  • 我用批处理文件设置系统变量,为什么编译时找不到JAVAC???
  • 编程新手问题:编译时找不到gnome.h文件,但系统肯定安装了gnome开发包,是不是哪里的环境变量设置不对啊?
  • 一个类中使用另一个类的实例变量作为成员时,提示类找不到,这是怎么回事?
  • hadoop的安装部署设置java环境变量后,ssh localhost时提示找不到文件路径
  • 奇了怪了,得不到变量的值(用了enctype="multipart/form-data" )
  • 安装cairo时候./configure成功,make失败:找不到pixman.h。但是我已经安装了pixman了,而且也设置了cairo的环境变量
  • SOLARIS8安装问题:找不到鼠标,找不到网卡,找不到显卡还说键盘不能用。。。
  • 我想问:我装了xmms,但在程序菜单中找不到,运行"xmms"说找不到该程序,卸载它时又 死掉了,怎么回事啊?
  • 请问import javax.ejb.EJBObject; 到底有没有阿?我的jdk好像说找不到这个,我在它的帮助文档种也找不到??
  • 系统RESET后,我的鼠标就找不到了!然后我想到重新安装,可是安装向导也找不到我的鼠标了!请问我该怎么办?谢谢!
  • 哎!国内打击盗版了,正值Windows转型之季,再也不想上微软件的船了,想转Linux,却也到了买不到Red Hat Linux碟、找不到下载链接的伤感
  • 数据包通过dev_queue_xmit发送出去,dev_queue_xmit返回值为0,但是对方收不到数据包 ,本机也抓不到发送出去的包
  • 用VMWARE刚装完fedora后,找不到ibus输入法,用快捷键shift+ctrl或ctrl+空格也找不到输入法
  • linux dhcpv6概率获取不到地址
  • 为什么找不到C++的标准类库
  • mount命令提示找不到介质
  • VMware 下安装LINUX 9找不到硬盘!
  • 为什么我的服务器说找不到jsp文件
  • 在jdk的帮助里,找不到开发jsp的类的帮助!
  • 在unix 下运行java 为什么找不到类
  • 老是找不到硬盘啊!!!
  • REDHAT8.0怎么会找不到GCC??
  • sendmail邮件收不到问题
  • suse linux找不到网卡
  • 登录后无法启动桌面,出现命令窗口,提示找不到字符集.
  • <新手提问>LINUX下串口收不到数据的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3