首页 > 解决方案 > .exe 已触发断点

问题描述

我对编码很陌生,我正在尝试了解编译器的想法。无论如何,我为学校编写了这段代码,该代码应该从 input.txt 文件中收集随机数据,按插入排序,然后将排序后的版本写入 output.txt 文件。此外,数据需要是 64 位的。我的代码有两个问题。一个是在编写它的函数期间,它说“.exe 已触发断点”。我不明白为什么会这样。第二个是它说我没有定义变量键,即使我认为我已经定义了。下面是我的代码。任何帮助将不胜感激,因为我对此很陌生。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>


typedef uint64_t u64;

struct file_contents
{
u64 *Data;
u64 Size;
};

file_contents

ReadFile(const char* FileName)
{
file_contents Contents = {};
FILE* File = fopen(FileName, "rb");
if (File)
{
    fseek(File, 0, SEEK_END);
    Contents.Size = ftell(File);
    fseek(File, 0, SEEK_SET);

    Contents.Data = (u64*)malloc(Contents.Size);
    if (Contents.Data)
    {
        fread(Contents.Data, 1, Contents.Size, File);
    }

    fclose(File);
}

return Contents;
}





u64*
SortFile(file_contents Contents)
{

u64 key;

for (int i = 1; i < 100; ++i)
{
    Contents.Data[i] = key;
    int j;
        j = i - 1;
    while (i >= 0 && Contents.Data[j] > key)
    {
        j = j - 1;
        key = Contents.Data[j + 1];
    }
}
return Contents.Data;
}


void
WriteFile(const char* FileName, file_contents Contents)
{ 
FILE* File = fopen(FileName, "w");
if (File)
{
    if (Contents.Data)
    {
        fwrite(Contents.Data, 1, Contents.Size, File); 
    }

    fclose(File);
}
}


void
CloseFile(file_contents Contents)
{
if (Contents.Data)
{
    free(Contents.Data);
    Contents.Data = 0;
    Contents.Size = 0;
}
}


void
WriteSortedFile(const char* InputFileName, const char* OutputFileName) 
{
file_contents File = ReadFile(InputFileName);
SortFile(File);
WriteFile(OutputFileName, File);
CloseFile(File);
}

int main()
{
file_contents Contents = ReadFile("input.txt");
WriteSortedFile("input.txt", "output.txt");
}

标签: cdebuggingbreakpoints

解决方案


推荐阅读