C 中带有函数的 realloc 结构

2024-03-12

我的 C 程序崩溃了,我太新了,无法弄清楚。到目前为止,它非常简单,我想代码足以找出问题所在。

我只是想逐行读取文件。一旦内存不足,我会将结构的内存加倍。如果这还不够,我会提供您需要的其他信息。

非常感谢您的帮助,因为我已经被困了几个小时了。

/*
John Maynard
1000916794
7/15/2013
HW-06
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 100

struct course
{
   char subject[11];
   int catalogNum;
   int sectionNum;
   int enrollmentTotal;
   int enrollmentCap;
};

void readFile(struct course *d, char* filename);

void double_array_size(struct course *d, int new_size);

int main(void)
{
   char *filename = "hw06-data.csv";
   struct course *d;

   d = malloc( N * sizeof(struct course));

   readFile(d, filename);

}


void readFile(struct course *d, char* filename)
{
   FILE* fp;
   char buffer[100];
   int i = 0, array_size = 100;
   struct course *temp;


   if( ( fp = fopen(filename, "r") ) == NULL)
   {
      printf("Unabale to open %s.\n", filename);
      exit(1);
   }

   fgets(buffer, sizeof(buffer), fp);

   while( fgets(buffer, sizeof(buffer), fp) != NULL)
   {
      if (i == array_size)
      {
         array_size *= 2;
         double_array_size(d, array_size);
         printf("reached limit...increasing array to %d structures\n", array_size);
      }



      i++;
   }
   fclose( fp );
}

void double_array_size(struct course *d, int new_size)
{
   struct course *temp;

   temp = realloc(d, new_size * sizeof(struct course));

   if(temp == NULL)
   {
      printf("unable to reallocate\n");
      exit(1);
   }

   else
      d = temp;
}

realloc()可能会返回与原始指针不同的指针,但您将其分配给temp只有这样调用函数之后仍然可以使用原始指针。改变double_array_size()返回由返回的新指针realloc()并打电话

d = double_array_size(d, array_size);

此外,您应该始终检查结果malloc(), realloc()等等。如果没有更多可用内存,它们可能会返回 NULL

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中带有函数的 realloc 结构 的相关文章

  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 选择列表逻辑应位于 ASP.NET MVC、视图、模型或控制器中的什么位置?

    我觉得我的问题与这个问题很接近 但我想对这样的代码应该放在哪里进行更一般的讨论 Asp Net MVC SelectList 重构问题 https stackoverflow com questions 2149855 asp net mv
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 获取尚未实例化的类的函数句柄

    我对 C 相当陌生 我想做的事情可能看起来很复杂 首先 我想获取一些函数的句柄以便稍后执行它们 我知道我可以通过以下方式实现这一目标 List
  • 对 boost 库的依赖项没有完整路径

    我已经成功构建了动态库 依赖于使用自定义前缀构建和安装的 boost 库 b2 install prefix PREFIX 然而 当我跑步时otool L在我的库中 我得到如下输出 libboost regex dylib compatib
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • C# 中的常量和只读? [复制]

    这个问题在这里已经有答案了 可能的重复 const 和 readonly 之间有什么区别 https stackoverflow com questions 55984 what is the difference between cons
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 在 C++17 中使用 成员的链接错误

    我在 Ubuntu 16 04 上使用 gcc 7 2 并且需要使用 C 17 中的新文件系统库 尽管确实有一个名为experimental filesystem的库 但我无法使用它的任何成员 例如 当我尝试编译此文件时 include
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque

随机推荐

  • 从磁盘读取的文本不符合换行符

    Using the Text widget with text that s read from disk that contains new line characters n does not go to new line Anyone
  • 从具有运行时索引的元组中选择一组值

    简短介绍我的问题 我正在尝试使用 stl 容器实现 某种 关系数据库 这只是出于娱乐 教育目的 因此不需要诸如 使用这个库 这绝对没用 之类的答案 我知道此时标题有点令人困惑 但我们会达到目的 非常欢迎改进标题的建议 我采取了一些小步骤 我
  • 如何在PHP中将大整数转换为十六进制?

    我怎样才能转换这个 93126606828970615947672892964530113131806047264927526149623497787359285987082123864065558768789161850941454200
  • (Dis)使用 Windows.Devices.Bluetooth.Rfcomm (WP8.1) 连接蓝牙设备

    在 Windows Phone Desktop 8 1 上连接和断开蓝牙设备会产生不同的结果 我一直在使用Windows Devices Bluetooth Rfcomm命名空间 我尝试连接多个具有不同蓝牙版本 类别的设备 版本 1 2 1
  • Laravel 5.2 为列上的 JSON 构建查询

    我正在使用 MySql 5 7 14 和 laravel 5 2 我的表 用户 JSON 如下所示 id 1 options religion R hllor the Lord of Light favorite color red 当我通
  • Kotlin 中的对象和数据对象

    我在 Sealed 类中编写了这 3 个游戏状态 sealed class Status object Idle Status object Active Status object GameOver Status IDE 没有任何地方建议
  • 在 Windows 中创建 Zip 文件并在 Linux 中解压 Zip 文件

    我在 Windows 下创建了一个 zip 文件 连同目录 如下所示 代码选自http www exampledepot com egs java util zip CreateZip html http www exampledepot
  • 使用循环和 if/else 的现金找零程序

    编写一个程序 允许用户输入最多 200 00 美元的现金金额 然后计算并打印以下面额 20 10 5 1 25 10 05 01 的金额 我想我已经弄清楚了如何获得面额 除法 模数 的基础知识 但 do while 和 if else 的结
  • Google Adsense 响应式广告未显示

    在下面的链接中here http syriantc com abohani index general 我有 3 个广告 右 左 标题广告 他们正在使用响应式单元 状态为 活动 问题是响应式广告没有显示 谷歌搜索显示这是由 CSS 主题引起
  • 如何在 TableView (javaFX 8) 的 TableColumn 中显示“单个条形图”?

    这是一个屏幕截图 感兴趣的是 右上部分和下部分 下半部分选择了一条规则 该规则共调用1080次 其中成功调用274次 空调用成功84次 现在我正在显示成功与总数的比率 以及空与成功的比率 我希望能够做的是废弃比率 而是使用一个图形栏来显示非
  • 在Java中捕获全局按键

    因此 每当用户在 Swing 应用程序中的任意位置按下空格键时 我想触发一个事件 暂停 取消暂停某些媒体 由于有如此多的控件和面板可以具有焦点 因此实际上不可能向所有控件和面板添加关键事件 更不用说总的 所以我发现 KeyboardFocu
  • grobToDev.default(gTree, dev) 中的错误

    我正在尝试使用shiny gridSVG 构建一个应用程序 这个问题不断发生 我对此一无所知 我的服务器 R library grid library lattice library gridSVG shinyServer function
  • 在 Ionic 2 应用程序中,模板在构造函数之前首先加载

    我正在开发 ionic 2 应用程序 我正在尝试调用组件中的服务并尝试在模板中访问它 但我面临的问题是模板首先加载 然后组件中的承诺输出成功 因此 如果我尝试访问任何 req obj 值 我会从模板中收到未定义的错误 如何确保承诺首先得到解
  • 渐进式 Web 应用程序:离线缓存在 Android 上不起作用,但在 Chrome 开发工具上起作用

    我有一个简单的 PWA 可以在网上正常运行 我还在 Chrome 开发工具中测试了离线行为 并且 Service Worker 正在完美地完成其工作 但是 当我从 Android 手机运行该应用程序时 它无法离线工作 因为离线时缓存存储不再
  • 如何更改 .npz 文件中的值?

    我想改变一个值npz file The npz文件包含几个npy的 我想要除了一个以外的所有 run param 保持不变 我想保存原始文件 这是我的工作代码 DATA DIR C Projects Test data ass file n
  • 从 shell 脚本生成交互式 telnet 会话

    我正在尝试编写一个脚本来允许我登录到控制台服务器的 48 个端口 以便我可以快速确定哪些设备连接到每条串行线路 本质上 我希望能够有一个脚本 给定主机 端口列表 远程登录到列表中的第一个设备 并使我处于交互模式 以便我可以登录并确认设备 然
  • MAC M1 安装“sharp”模块时出错

    Running npm run dev gatsby develop 在 MacBook Pro M1 芯片上退出 Error Something went wrong installing the sharp module Running
  • JSON ValueError:期望属性名称:第 1 行第 2 列(字符 1)

    我在使用 json loads 转换为 dict 对象时遇到问题 我无法弄清楚我做错了什么 我运行这个的确切错误是 ValueError Expecting property name line 1 column 2 char 1 这是我的
  • 在 onStopTrackingTouch 中获取进度,而不是在搜索栏中的 onProgressChanged 中获取进度

    我是 Android 开发新手 我用onProgressChanged获取当前进度 因为进度是函数的参数 but 我只想获得进度的最终值当用户释放seekbar不是立即值 提前致谢 The onStopTrackTouch方法定义在OnSe
  • C 中带有函数的 realloc 结构

    我的 C 程序崩溃了 我太新了 无法弄清楚 到目前为止 它非常简单 我想代码足以找出问题所在 我只是想逐行读取文件 一旦内存不足 我会将结构的内存加倍 如果这还不够 我会提供您需要的其他信息 非常感谢您的帮助 因为我已经被困了几个小时了 J