免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5225 | 回复: 22
打印 上一主题 下一主题

大侠帮忙呀!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-05 18:05 |只看该作者 |倒序浏览
10可用积分
下面这段程序执行就会coredump? 郁闷死了!

问题就出在printf那里  可是怎么改呢?

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
main( ) {
    char file_path[256];
    char file_name[256];
    char rec_line[256];
    char *point;
    FILE *fp;

    sprintf( file_path, "test.txt" );
    memset(file_name,0,sizeof(file_name));

    fp = fopen( file_path, "r" );

    fgets( rec_line, sizeof( rec_line ), fp );

    printf ( "rec_line %s\n",rec_line);
    point = strtok( rec_line, "|" );         
    point = strtok( NULL, "|" );            
    point = strtok( NULL, "|" );              
    point = strtok( NULL, "|" );               
    printf ( "ttl_num %s\n",point);

    point = strtok( NULL, "|" );               
   printf ( "ttl_amt %s\n",*point);
    fclose(fp);
}

最佳答案

查看完整内容

我在我的机器上跑了下你的程序没出错啊不过为了去掉warning,我做了如下改动加了#include main改为int main()程序最后加了return 0;第二个printf中的*point改为point环境:debian4,Linux debian 2.6.18-5-686 #1 SMP Sun Aug 12 21:57:02 UTC 2007 i686 GNU/Linuxgcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

论坛徽章:
0
2 [报告]
发表于 2007-09-05 18:05 |只看该作者
原帖由 霏飞 于 2007-9-6 09:57 发表



不会的  我的test.txt 格式如下:
1|12|123|1234|12345|123456|1234567|12345678|123456789|

肯定不会是NULL的

而且我加上了判断还是coredump了

我在我的机器上跑了下你的程序
没出错啊
不过为了去掉warning,我做了如下改动
加了#include <string.h>
main改为int main()
程序最后加了return 0;
第二个printf中的*point改为point

环境:debian4,Linux debian 2.6.18-5-686 #1 SMP Sun Aug 12 21:57:02 UTC 2007 i686 GNU/Linux
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

论坛徽章:
0
3 [报告]
发表于 2007-09-05 19:50 |只看该作者
去掉星号
printf ( "ttl_amt %s\n",*point);

论坛徽章:
0
4 [报告]
发表于 2007-09-05 21:09 |只看该作者
这个程序的目的是什么啊?

论坛徽章:
0
5 [报告]
发表于 2007-09-06 09:25 |只看该作者
原帖由 ypxing 于 2007-9-5 19:50 发表
去掉星号
printf ( "ttl_amt %s\n",*point);



去掉*  加上*  编译都可以通过 可是都不能执行!




回chinesedragon
这是一个测试程序, 想要把文件里面的某个字段取出来, 这里是想显示看一下。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-09-06 09:37 |只看该作者
你那么多次strtok,point是不是已经变成NULL了?

论坛徽章:
0
7 [报告]
发表于 2007-09-06 09:43 |只看该作者
原帖由 lenovo 于 2007-9-6 09:37 发表
你那么多次strtok,point是不是已经变成NULL了?

有可能,还是先判断一下
if(point != NULL)
      printf......

论坛徽章:
0
8 [报告]
发表于 2007-09-06 09:57 |只看该作者
原帖由 lenovo 于 2007-9-6 09:37 发表
你那么多次strtok,point是不是已经变成NULL了?



不会的  我的test.txt 格式如下:
1|12|123|1234|12345|123456|1234567|12345678|123456789|

肯定不会是NULL的

而且我加上了判断还是coredump了

[ 本帖最后由 霏飞 于 2007-9-6 10:01 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2007-09-06 10:04 |只看该作者
你的程序,你能不能单步跟踪一下?

论坛徽章:
0
10 [报告]
发表于 2007-09-06 10:05 |只看该作者
>>sprintf( file_path, "test.txt" );
sprintf( file_path, "%s", "test.txt" );
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP