c - .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");
}
解决方案
推荐阅读
- python - 如何在 Flask 的页面上显示我的 html 文件
- snakeyaml - 在 Thorntail 中访问 yaml 外部文件
- c# - 带有建议的 NSTextField 显示在下拉列表中
- c# - C# 更新 CSV 单元格
- javascript - 为什么这不更新我的状态,它应该?反应还原
- node.js - 仅当密钥存在 firebase 云功能时才更新
- c - C 案例编号+1:需要括号吗?
- jquery - 用户在新浏览器选项卡中输入 PDF 文件的 HTML 表单
- android - VideoPlayer 小部件不断给出 NullPointerException 调用空对象引用上的虚拟方法
- vba - 用于自动搜索的 Excel VBA 代码