标题:在把文件读进链表的时候出了问题,请问改怎么解决?帮忙修改一下
只看楼主
livq
Rank: 2
来 自:hb
等 级:论坛游民
帖 子:14
专家分:30
注 册:2017-12-8
结帖率:50%
已结贴  问题点数:20 回复次数:2 
在把文件读进链表的时候出了问题,请问改怎么解决?帮忙修改一下
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct node
{
    int data;
    char name[100];
    char valu[100];
    struct node *next;
};

struct node * creat ( int n , char *argv )                                   //创建链表
{
    struct node *head, *p, *q;
    int i=0 ,t;
    char *pp , *qq , str[100];
    head = (struct node *)malloc(sizeof(struct node));                                                     //
    p = head;
    FILE *fp;
    fp = fopen( argv , "r");
    /*while( fscanf(fp , "%d" , &t) != EOF )
    {
        if( (q = ( struct node * )malloc(sizeof(struct node))) == NULL )
        {
            printf("error!");
        }
        else
        {
            q->data = t;
            //strcpy( q->name , "hello" );
            p->next = q;
            p = q;
        }
    }*/
    while( !feof(fp) )
        {
            fgets(str , 100 , fp );
            
            pp = strchr( str , '=' );
            qq = pp + 1;
            *pp = '\0';
            pp = NULL;
            if(pp = strchr( qq , '#' ))
            {
                *pp = '\0';
            }
            if( (q = ( struct node * )malloc(sizeof(struct node))) == NULL )
            {
                printf("error!");
            }
            else
            {
                strcpy( q->name , delblank(str) );
                strcpy( q->valu , delblank(qq) );
                p->next = q;
                p = q;
            }
        }
    p->next = NULL;
    head = head->next;
    return(head);
    fclose(fp);
}


void output(struct node *head)                                                //输出链表
{
    struct node *p;
    // p = head->next;
    p = head;
    while( p )
    {
        printf("%s=%s\n" , p->name , p->valu);
        p=p->next;
    }
}

char * delblank( char *str )
{
    char *p ,*q;
    int len = 0;
    
    len = strlen(str);
    p = str;
    if( *str == ' ')
    {
        while( *p == ' ' )
        {
            p++;
        }
    }
    q = str + len - 1;
    while( *q == ' ' )
    {
        q--;
    }
    *(q + 1) = '\0';
    return p;
}

int main( int argc , char * argv[] )                                                                        //主函数
{
    int number=5 , i=0;
    struct node *head, *searchp, *searchp2, *q;
    head = creat(number , argv[1] );
    printf("原链表:\n");
    output(head);
    printf("\n\n");
}



报错在图片里
搜索更多相关主题的帖子: str struct node char head 
2017-12-08 18:01
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:20 
顶上给出原型,或者把delblank函数写到上面去嘛。
无原型的函数默认是int的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-12-08 18:51
livq
Rank: 2
来 自:hb
等 级:论坛游民
帖 子:14
专家分:30
注 册:2017-12-8
得分:0 
谔谔,居然犯这么低级的错误,无语,谢谢啦
2017-12-10 13:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483222-1-1.html




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

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