| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1891 人关注过本帖
标题:fclose()关闭文件崩溃问题
只看楼主 加入收藏
lvhui123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
fclose()关闭文件崩溃问题
本地随便创造四个文件,我的环境是有single_node_boolean.sql; single_node_char.sql; single_node_name.sql; single_node_varchar.sql;四个文件做测试。
在字符串切割后的文件名去读取和关闭文件时,崩溃掉。
请求哪位大神能帮忙分析下原因?非常感激!!

程序代码:
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
#include <string.h>

bool file_exists(const char* file)
{
    FILE* f = fopen(file, "r");

    if (!f) {
        return false;
    }
    fclose(f);
    return true;
}

int main()
{
    char schedule_file[] = "single_node_boolean.sql single_node_char.sql single_node_name.sql single_node_varchar.sql";
    char** tests = NULL;
    tests = (char**)malloc(sizeof(char**));
    char* pcTemp = NULL;
    bool InsideWord = false;
    int num_tests = 0;

    for (pcTemp = schedule_file; *pcTemp != '\0'; pcTemp++) {
        if (*pcTemp == ' ') {
            *pcTemp = '\0';
            InsideWord = false;
        } else if (!InsideWord) {
            tests[num_tests] = pcTemp;
            num_tests++;
            InsideWord = true;
        }
    }

    int int_temp = 0;
     while (int_temp < num_tests) {
        file_exists(tests[int_temp]);
        int_temp++;
    }
}
搜索更多相关主题的帖子: char 崩溃 sql 文件 关闭 
2021-01-27 16:02
lvhui123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-27
收藏
得分:0 
尝试过char二维数组,strcpy给赋值文件名,没有该问题,但字符串切割就出现崩溃,我想知道为什么,到底是什么原因导致fclose崩溃
2021-01-27 16:04
lvhui123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-1-27
收藏
得分:0 
问题已经找到了,是tests = (char**)malloc(sizeof(char**))申请的空间不够,导致tests[1]/tests[2]/tests[3]地址越界了。
改成tests = (char**)malloc(4 * sizeof(char**))就好了,但还有个疑问,就是为何当tests空间不够时,为何schedule_file包含三个文件又没有问题? 太奇怪了!
2021-01-27 17:35
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:20 
C语言 只保证正确的代码 得到预期的结果
不保证错误的代码得到预期的错误

https://zh.
2021-02-01 09:13
快速回复:fclose()关闭文件崩溃问题
数据加载中...
 
   



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

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