标题:运行程序报 Memory fault(coredump)
只看楼主
lxy88129688
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-9-9
结帖率:75%
已结贴  问题点数:10 回复次数:8 
运行程序报 Memory fault(coredump)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct list
{
char name[10];
char IPADD;
int port;
}

int main()
{
int i=0;
struct list s[256];
FILE *fp;
FILE *fp1;
fp=fopen("../1.cfg","r");
fp1=fopen("../2.xml","w");
if(fp==NULL)
{
printf("Can't open 1.cfg\n");
return 1;
}
if(fp1==NULL)
{
printf("Can't open 1.xml");
return 1;
}
fprintf(fp1,"%s\n","<?xml>");
fprintf(fp1,"%s\n","<retCfg>");
fprintf(fp1,"%s\n","<list>");
while(!feof(fp))
{
fprintf(fp1,"%s\n","<rspcode>");
fscanf(fp,"%s",s[i].name);
fprintf(fp1,"<name>%s</name>\n",s[i].name);
fscanf(fp,"%s",s[i].IPADD);
fscanf(fp,"%d",&s[i].port);
fprintf(fp1,"<value>%s|%d</value>\n",s[i].IPADD,&s[i].port);
fprintf(fp1,"%s\n","<rscpode>");
i++;
}
fprintf(fp1,"%s\n","</list>");
fprintf(fp1,"%s\n","</retChg>");
return 0;
}


1.cfg文件格式如下:
A1010228 156.2.2.2 5050
A1132435 156.2.2.3 5050
。。。。。。。。。
搜索更多相关主题的帖子: return Memory include 运行程序 
2014-09-10 09:52
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
linux  windows ???

DO IT YOURSELF !
2014-09-10 09:59
lxy88129688
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-9-9
得分:0 
回复 2 楼 wp231957
Linux
2014-09-10 10:04
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
linux 下就不敢妄议了   个人觉得和windows下的c 还是有区别的  你比如 c:\\aaa\\a.txt 这是windows下的c语法

DO IT YOURSELF !
2014-09-10 10:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
错误太多,比如 fscanf(fp,"%s",s[i].name); 比如 while(!feof(fp)), 比如 第二个fprintf(fp1,"%s\n","<rscpode>");
只能重写了
程序代码:
#include <stdio.h>

int main()
{
    FILE *cfg, *xml;
    {
        cfg = fopen( "../1.cfg", "r" );
        if( !cfg )
        {
            printf( "%s", "Cannot open 1.cfg\n" );
            return 1;
        }

        xml = fopen( "../2.xml", "w" );
        if( !xml )
        {
            fclose( cfg );
            printf( "%s", "Cannot open 2.xml\n" );
            return 1;
        }
    }

    fprintf( xml, "<?xml>\n<retCfg>\n<list>\n" );
    while( 1 )
    {
        char name[20], ipaddr[20], port[20];
        if( 3 != fscanf(cfg, "%s%s%s", name, ipaddr, port) )
            break;
        fprintf( xml, "<rspcode>\n<name>%s</name>\n<value>%s|%s</value>\n</rscpode>\n", name, ipaddr, port );
    }
    fprintf( xml, "</retCfg>\n</list>\n" );

    fclose( cfg );
    fclose( xml );
    return 0;
}

2014-09-10 10:25
lxy88129688
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-9-9
得分:0 
回复 5 楼 rjsp
按照你的程序来,编译有错误
2014-09-10 12:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用lxy88129688在2014-9-10 12:00:09的发言:

按照你的程序来,编译有错误

我这里编译没有问题 不知道你的编译器是啥
2014-09-10 12:18
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
得分:0 
直接用gdb调试噻!!!很好找错误的
2014-09-10 13:56
lxy88129688
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-9-9
得分:0 
回复 5 楼 rjsp
您的程序很好,是我输入错误,再请教个问题
这份文件前面有许多注释,都是以##开头的,例如
##        Modifier   Modify Date        Description
## 。。。。。。。。。。。。。。。。。

请问,怎么忽略这些注释部分,就在您的程序的基础上,就是如何跳过几行读取数据,每行数据不固定

[ 本帖最后由 lxy88129688 于 2014-9-10 14:58 编辑 ]
2014-09-10 14:10



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




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

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