传递任意大小的二维数组

2024-02-13

您好,我正在研究排序算法,为此我想制作一个简单的程序来从文本文件中获取整数数组。在这样做的同时,我遇到了一些关于将它们作为参数的数组和函数的麻烦和问题。这是我所做的:

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

#define MAX_SIZE 64
#define MAX_INT_SIZE 10000

void itobuff(const char* istring,const int** sint);
int getistring(FILE* file,char strbuffer[][MAX_SIZE],int max_int,int max);

int main(int argc,char*argv[]){

   char buffer[MAX_INT_SIZE][MAX_SIZE];

   int int_counter=0;
   int int_buffer[MAX_INT_SIZE];

    FILE *file = fopen("MYFILE.txt","r");

    getistring(file,buffer,MAX_INT_SIZE,MAX_SIZE);


    return 0;

} 

我的疑问是函数的定义

int getistring(FILE* file,char strbuffer[][MAX_SIZE],int max_int,int max);

我想编写一个允许使用任何大小的数组的函数。我知道这是错误的,但从逻辑上讲,这是我想要实现的目标,但不知道如何实现。

 int getistring(FILE* file,char strbuffer[][],int max_int,int max);

我知道我想做的事情可以通过其他方式完成,但我想知道如何去做。例如,如果我想编写一个获取数组并返回该数组的行列式的函数,那么您不应该被迫将自己限制为 k 大小的数组。或者更一般地说,用于任何其他数组操作的 i 列、j 行数组。


如果您使用支持 C 1999 的 C 实现,则它支持可变长度数组。

声明一个采用可变长度数组参数的函数,如下所示:

int getistring(FILE *file, size_t Rows, size_t Columns, char buffer[][Columns]);

像这样调用该函数:

result = getistring(file, Rows, Columns, buffer);

像这样创建缓冲区数组:

size_t Rows = some calculation for number of rows;
size_t Columns = some calculation for number of columns;
char (*buffer)[Columns] = malloc(Rows * sizeof *buffer);
if (!buffer)
     Handle error.

完成后,释放缓冲区数组,如下所示:

free(buffer);

如果行数和列数较少,可以定义自动存储的缓冲数组,而不是使用malloc and free, 像这样:

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

传递任意大小的二维数组 的相关文章

随机推荐

  • 最后插入 ID 返回 0 [重复]

    这个问题在这里已经有答案了 其实关于这个的帖子有很多 但即使我检查了这些 仍然找不到问题 DBC类 protected function connect dns mysql host this gt server dbname this g
  • 将 DateTime 转换为 long,反之亦然

    我想将日期作为数字存储在表中 我知道该怎么做 但我不知道如何回去 如何将 long 变量转换为 ToDateTime DateTime now DateTime Now long t now ToFileTime DateTime toda
  • CMake、C++ 和 Jenkins/持续集成

    我有一个 CMake 示例项目 我想在 Ubuntu 15 10 上运行的 Jenkins 上构建该项目 我已经安装了 https wiki jenkins ci org display JENKINS CMake Plugin https
  • 如何在java中将Mongo DB中的数据导出为ex​​cel格式

    MongoDB 中的架构 姓名 卡马拉 流动 Date 2018 08 03 New set Form y 1 d 3 p 3 我的java代码 公共静态无效主 字符串 args String db Database String col
  • 处理 JSON 对象的最佳方法是什么?

    我有一个代表 JSON feed 的大字符串 我的应用程序从远程网络服务下载此提要 问题 1 下载 JSON feed 后 我应该将其存储在哪里 现在我将其存储在应用程序首选项中并且工作正常 我只是感兴趣是否有任何理由不这样做 或者是否有更
  • 编写 gem 时设置配置设置

    我正在编写一个 gem 我希望它可以在有或没有 Rails 环境的情况下工作 我有一个Configuration允许配置 gem 的类 module NameChecker class Configuration attr accessor
  • 在列表(或其他数据结构)中有效插入多个元素并保持其顺序

    我有一个项目列表 应该一个接一个地插入到类似列表的数据结构中 并且我有每个项目应该插入的索引 例如 items itemX itemY itemZ indexes 0 0 1 预期的结果是有一个像这样的列表 result itemY ite
  • C++ 模板类;任意容器类型的函数,如何定义它?

    好的 简单的模板问题 假设我定义我的模板类是这样的 template
  • 在 macOS 上的 MAMP 或 XAMPP 上安装 phalcon 时出现错误

    我正在尝试在 macOS 上的 xampp 或 MAMP 上安装 phalcon 请告诉我如何在 MAMP 上正确安装 phalcon 我在 XAMPP 上安装时遇到相同的错误 我用这个教程https madebyextreme com i
  • 通过连接到满足某些条件的另一个表的最新记录来更新表

    我试图避免为此解决方案使用循环的冲动 而是使用基于集合的操作 我需要根据最近出现的与另一个表的连接来更新表中的每条记录 我的第一个想法是加入到我需要 最近日期 的表并根据连接条件进行分组 但是使用GROUP BY with UPDATE是无
  • new() 没有 delete() 是未定义行为还是仅仅是内存泄漏? [复制]

    这个问题在这里已经有答案了 可能的重复 内存泄漏是 C 中的 未定义行为 类问题吗 https stackoverflow com questions 1978709 are memory leaks undefined behavior
  • 使用 terraform 部署 Azure 功能

    我有以下 terraform 代码 用于使用 zip 部署将函数应用程序和函数部署到 Azure 门户 terraform required providers azurerm source hashicorp azurerm versio
  • 查找适用于 Windows 的 javafx jar 文件

    有谁知道在哪里可以找到该jar文件javafxWindows 的包 我只能找到 zip 文件和 exe 文件 有人可以回答并提供下载包的链接吗 您需要首先安装 javafx sdk 2 0 1 windows i586 exe 这将在您的计
  • 无法将 Firebase 导入到 Swift 类中

    我对 Firebase 和构建 iOS 应用程序完全陌生 在 Xcode 7 中 我尝试将 Firebase 导入到我的 Swift 类中 在一个 swift 文件中 我输入了 import Firebase 我收到一条错误消息 没有这样的
  • MvvmCross 5.4 在 ConsoleLogProvider 中使用 NullRef 启动应用程序时崩溃

    我已更新我的 Xamarin Android 应用程序包MvvmCross from 5 3 2 to 5 4并且应用程序在启动时开始崩溃 我手动确定原因是链接器 我有link SDK libs only选项已启用 随着None选项它工作得
  • Spinner 的 RxBindings?

    我是新的 android 和 rxjava 我经历过很多使用 rxbindings 监听事件的例子 比如这个 RxView clicks b subscribe new Action1
  • Java,如何绘制不断变化的图形

    以前没有这样做过 所以显然我很糟糕 这里 当前鼠标位置周围的 64 像素在表单上绘制得稍大一些 问题是 它 有点 慢 而且我不知道从哪里开始修复 除此之外 我创建了一个线程 在完成后不断调用更新图形和一些类似文本的 fps 以真正显示绘制事
  • RabbitTemplate 接收并重新排队

    我想从队列接收消息并立即将它们出队 事实上我想模仿rabbitMQ管理控制台的行为 它可以接收消息并将其重新排队 所以我的问题是如何做到这一点 起初 我试图克隆消息并重新发送它们 但rabbitTemplate似乎无法将消息直接发送到队列
  • Heroku 登录错误:证书链中的自签名证书

    我正在尝试在 Mac 上使用 Heroku CLI 当我尝试使用 Heroku 登录名登录 Heroku 并提供我的凭据时 出现以下错误 错误 证书链中的自签名证书 我已多次尝试卸载并重新安装它 但仍然收到此错误 我该如何解决 由于我的组织
  • 传递任意大小的二维数组

    您好 我正在研究排序算法 为此我想制作一个简单的程序来从文本文件中获取整数数组 在这样做的同时 我遇到了一些关于将它们作为参数的数组和函数的麻烦和问题 这是我所做的 include