| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 463 人关注过本帖
标题:内存出错!
只看楼主 加入收藏
hanzhe88218
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-10-31
收藏
 问题点数:0 回复次数:1 
内存出错!
下面是我下的一个程序;  从文件中截取字符串;
文件内容:01 2721923    01 07338218731      13:20:11 13:21:51 1996/09/04 000100 0004 0003
从文件中读取第4位到第10位的字符, 即“2721923”。  
  但是在VC6.0上运行,前面的都没错, 执行时出错了, 出现内存错误,
 请大家帮我看下;
谢谢;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys\stat.h>

void main()
{
    FILE *fp;
    char *m, *n, *p;
    struct stat buf;

    stat("e:\\11\\44.txt", &buf);
    p = malloc(sizeof(p));
    m = malloc(buf.st_size);

    while((fp = fopen("e:\\11\\44.txt","rt")) == NULL)
    {
        printf("can't find the file\n");
    }
   
   

    fread(m, buf.st_size, 1, fp);
      
    n = m + 3;

    strncpy(p, n, 7);
         
    *(p + 10) = '\0';
   
    printf("%s\n", p);

    fclose(fp);
    free(p);
    free(m);
}
搜索更多相关主题的帖子: 内存 
2008-12-01 15:36
gengjf025
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2008-11-22
收藏
得分:0 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys\stat.h>

void main()
{
    FILE *fp;
    char *m, *n, *p;
    struct stat buf;

    stat("e:\\11\\44.txt", &buf);
    p = (char *)malloc(sizeof(char)*100);       //需要强制转换
    m = (char *)malloc(buf.st_size);     

    while((fp = fopen("e:\\11\\44.txt","rt")) == NULL)
    {
        printf("can't find the file\n");
    }
   
   

    fread(m, buf.st_size, 1, fp);
      
    n = m + 3;

    strncpy(p, n, 7);
         
    *(p + 7) = '\0';          //你要的数据长度为7,搞不懂你为什么要加10
   
    printf("%s\n", p);

    fclose(fp);
    free(p);                    
    free(m);
}
主要问题:你变量p的空间分配和释放有问题。遇到问题可以自己用单步调试试试
2008-12-01 16:46
快速回复:内存出错!
数据加载中...
 
   



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

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