c语言问题-一个链表问题 是关于链表添加的 但是周围的人每人能看出来问题

问题描述

一个链表问题 是关于链表添加的 但是周围的人每人能看出来问题

#include "common.h"
#include "config.h"
CONFIG_INFO_S srccon={0,NULL,NULL} ;

int vipp_config_add(char *buf)

{
char *delim= "=n";
CONFIG_NODE_S plist;
strcpy(plist.key ,strtok(buf,delim));
strcpy(plist.value,strtok(NULL,delim));
if(srccon.head==NULL)
{
srccon.head=srccon.tail=&plist;
printf("1 printf is %s,value is %sn",srccon.head->key,srccon.head->value);
}
else
{
srccon.tail->next =&plist;
srccon.tail=&plist;
printf("2 printf is %s,value is %sn",srccon.tail->key,srccon.tail->value);
}
srccon.tail->next=NULL;
srccon.confignum++;
memset(buf,0,1024);
return 0;
}

int vipp_config_travser()
{
FILE *fp;
char buf[1024]={0};
strcpy(buf,"en.conf");
if(buf == NULL)
{
// printf("no this filen");
exit (-1);
}
fp = fopen(buf,"r");
if(fp == NULL)
{
perror("fopen");
exit (-1);
}
while(fgets(buf,1024,fp))
{
vipp_config_add(buf);
}
return 0;
}
void travel()
{
CONFIG_NODE_S *plist=srccon.head;
while(plist!=NULL)
{
printf("key = %s,value = %sn",plist->key,plist->value);
plist= plist->next;
}
}
主函数是
int main(void )
{
char tem[32]={0};
struct _config_node pre;
strcpy(tem,"config.cof");
vipp_config_travser();
travel();

return 0;

}要便利的文本是这个样子的:welcomepro=Welcome
ipaddr=HostIPAddress
bcast=HostBcastAddress
nick=HostNickname
status=HostStatus
online=OnlineDevices
call=calls
message=messages
callwith=Callingwith
consolempt=vipp
nickname=OllyDbg
scaninter=2
autorecord=0
但是我怎么也找不到自己出错在哪里,打印的结果完全不对,望诸位大神不吝赐教

解决方案

#include "common.h"
#include "config.h"
CONFIG_INFO_S srccon={0,NULL,NULL} ;

int vipp_config_add(char *buf)

{
char delim= "=n";
*
*****CONFIG_NODE_S plist; 问题在这里 由于这个是固定的地址 而且在不断地调用,其地址是一直不变的,所以每次虽然添加了,但是都会被下一次覆盖,所以,到了最后一直都是一个。
呵呵,以后切记,地址问题,内存分配特别重要

时间: 2024-10-29 19:01:06

c语言问题-一个链表问题 是关于链表添加的 但是周围的人每人能看出来问题的相关文章

C语言实现一个简单的单向链表list

用C语言实现一个简单实用的单向链表list,具有一定的实际意义.尤其我们不想使用STL里面的list<...>类的时候.我实现的这个list,结点存储任何调用者分配的任意类型的数据(void*).这个list适用于一些简单的场合,消耗极少的资源. 头文件: /* * list.h * Generic sequential linked list node structure -- can hold any type data. * cheungmine * Sep. 22, 2007. All

用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环。

问题描述 用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环. 用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环. 解决方案 如果链表有环,永远算不出来 只能假定,这个链表不是环形链表,也没有环 简单事情用递归做是低效率的,即便学习递归,也是不必要的 递推, 可以用递归实现 也可以用迭代实现 前者无循环,后者有 解决方案二: int listLength(List *l) { if(l->next!=NULL) { l=l->next; ret

c语言-C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看

问题描述 C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看 #include #include #define N 8 typedef struct list { char c; struct list *next; } SLIST; SLIST *creat(char *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i { q=(SLIST *)malloc(sizeof(SLI

c语言-求一个关于C语言中有关文件和链表的一个程序

问题描述 求一个关于C语言中有关文件和链表的一个程序 我们老师布置了一道题:有A和B两个文件夹,每个文件夹下面都有若干子目录.但是 不知道目录里面文件的类型和具体的文件数目.现在要创建一个C文件夹,对C文件夹 的要求是:(1)C文件夹下面子目录的文件名和文件长度是A的,打开的内容是B的( 打开之后只要内容是B的,不要求内容完整与否).(2)通过键入命令或是其他方式 C文件夹可以直接恢复到B文件夹.要求使用链表完成. 我们老师只把题目说了这些,他说对A.B文件夹的定义让我们自己讨论吧.能实现他所

c语言-C语言写通讯录用数组好还是链表好?

问题描述 C语言写通讯录用数组好还是链表好? C语言写通讯录,需要每次打开有数据,需要保存数据,删除,添加,修改..... 用链表是不是还要每次打开后读取文件数据到链表中,感觉太麻烦,到底用数组好还是链表更合适?如果用链表,如何实现链表数据的保存和读取? 解决方案 二者都属于一种数据结构 从逻辑结构来看 1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况.当数据增加时,可能超出原先定义的元素个数:当数据减少时,造成内存浪费:数组可以根据下标直接存取. 2. 链表动态地进行

C语言解字符串逆序和单向链表逆序问题的代码示例_C 语言

字符串逆序上次面试碰到一个单向链表逆序的题目,幸好对字符串逆序比较熟悉,类比做出来了.字符串逆序比较简单,直接上代码: void stringReverse(char* p1,char* p2) { if(p1==p2)return; //swap the value of p1 ,p2 *p1=(*p1)+(*p2); *p2=(*p1)-(*p2); *p1=(*p1)-(*p2); if(p1==p2-1)return; else stringReverse(++p1,--p2); } 调

谁能帮我用C语言编一个学生信息管理系统

问题描述 用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入.数据输出.数据处理等操作.在主函数里能实现以下功能.运行后出现一个选择提示.可选择的功能有1)创建新的学生信息链表 2)增加一个新的学生信息 3)按学号删除某个学生信息 4)按学号查找某个学生信息 5)可以按照学生成绩对链表排序 6)退出系统补充功能:基础较好的同学可以定义一个SAVE函数保存成score.txt,和一个display函数打开该文件,学生信息要含有学号,姓名,三门成绩,还要计算总分和平均成

erilog-用verilong语言编写一个走马灯的代码

问题描述 用verilong语言编写一个走马灯的代码 多模式LED发光控制器(Basys3)1)采用16个并排LED实现跑马灯发光器件:2)具有异步复位功能(按钮),复位时,LED全亮:3)模式选择(利用两位滑动开关):00-左循环跑马灯,01-右循环跑马灯,10-交叉闪烁跑马灯,11-全亮全灭闪烁4)速度选择(利用两位滑动开关):通过00-11实现四个速度等级的闪烁效果 解决方案 参考http://download.csdn.net/detail/xkdhdl/1745598http://ww

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于