从 C 语言文件中读取二维数组

2023-12-23

我正在尝试创建一个程序来从文件中读取二维数组,然后将其打印出来。

该文件的设置使得第一行具有行数,然后是列数。之后绘制数组。示例如下:

3 5
10.4 15.1 18.5 13.3 20.8
76.5 55.3 94.0 48.5 60.3
2.4 4.6 3.5 4.6 8.9

我的问题是我只知道如何使用 fgets 和 sscanf 读取每行的第一个元素,因此忽略以下数字。

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

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

FILE* f = fopen("plottestdata", "r");
char size[20];
int height, width,ii=0,cc,jj,kk;
float array[100][100];
char horiz[500];

if(fgets(size, 20, f)!= NULL){

    sscanf(size,"%d %d", &height, &width);
    printf("%d %d\n",height, width);
}
while(fgets(horiz, 500, f)!=NULL)
{

    if(ii<height)
    {
        for(cc=0;cc<width;cc++)
        {
        sscanf(horiz, "%f", &array[ii][cc]);
        }
    ii++;
    }
}
for(jj=0;jj<width;jj++)
    {
        for(kk=0;kk<height;kk++)
        {
        printf("%f ", array[jj][kk]);
        }
    }
fclose(f);
return 0;
}

这给了我多次重复的每行第一个元素的输出,我明白为什么,但不确定如何修复它。它正在读取的文件实际上是一个 20x20 数组,尽管其格式与示例相同。

另外,为了试图缩短一个长问题,我省略了错误检查。


我无法抗拒调整和简化你的代码,它是如此接近,以避免使用fgets并使用fscanf直接读取数值。加上基本的错误检查。

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

#define MWIDTH  100
#define MHEIGHT 100

int main(void){

    FILE* f;
    int height, width, ii, jj;
    float array[MHEIGHT][MWIDTH];

    if((f = fopen("plottestdata.txt", "r")) == NULL)
        exit(1);

    if(fscanf(f, "%d%d", &height, &width) != 2)
        exit(1);
    if (height < 1 || height > MHEIGHT || width < 1 || width > MWIDTH)
        exit(1);

    for(jj=0; jj<height; jj++)
        for(ii=0; ii<width; ii++)
            if(fscanf(f, "%f", &array[jj][ii]) != 1)
                exit(1);
    fclose(f);

    for(jj=0; jj<height; jj++){
        for(ii=0; ii<width; ii++)
            printf ("%10.1f", array[jj][ii]);
        printf("\n");
    }
    return 0;
}

程序输出:

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

从 C 语言文件中读取二维数组 的相关文章

  • 反序列化 GUID 数组时出现 JSON.NET 异常

    我正在使用 JSON NET 反序列化从浏览器发送的 AJAX HTTP 请求 并且在使用 Guid 作为参数的 Web 服务调用时遇到问题 当我使用内置的 NET 序列化器时 这工作得很好 首先 流中的原始字节如下所示 System Te
  • 从 WatchOS 捕获 Apple Watch 的型号标识符

    似乎没有任何记录的官方方法可以从手表应用程序获取 Apple Watch 模型 但有一篇文章显示了特殊用途sysctlbyname 如何确定Apple Watch型号 https stackoverflow com questions 49
  • 在 R 中将数组转换为矩阵

    我有一个数组 其中包括名为 comp 的项目 是 否 的两个熟练度变量 theta0 theta1 这需要转换为一个矩阵 有什么方法可以转换像底部那样的矩阵吗 我的数组如下所示 gt priCPT i6 comp Yes theta1 th
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • 为什么要在 C 和 C++ 项目中创建 include/ 目录?

    当我处理我的个人 C 和 C 项目时 我通常把file h and file cpp在同一目录中 然后file cpp可以参考file h with a include file h 指示 然而 通常会发现库和其他类型的项目 如 linux
  • 处理可选依赖项 (C#)

    我们有一个可以选择与 TFS 集成的应用程序 但是由于集成是可选的 所以我显然不希望所有机器都需要 TFS 程序集作为要求 我应该怎么办 我是否可以在主程序集中引用 TFS 库 并确保在使用 TFS 集成时仅引用 TFS 相关对象 或者 更
  • 带和不带指针声明符的 C++11 自动声明

    不同类型有什么区别bar1 and bar2 int foo 10 auto bar1 foo auto bar2 foo If both bar1 and bar2 are int 编写指针声明符是否有意义 在里面bar2宣言 这些声明完
  • StreamReader 的默认值是多少?

    我需要使用这个构造函数public StreamReader Stream stream Encoding encoding bool detectEncodingFromByteOrderMarks int bufferSize bool
  • 在 UserControl C# .NET 中添加/停靠控件

    我正在编写一个 UserControl 它以编程方式添加子控件 目前我正在添加新的控件 如下所示 this Controls Add new Control Height 16 Dock DockStyle Top 我遇到的问题是新控件添加
  • CMake include_directories 和 add_subdirectories 之间的区别?

    我正在学习 CMake 来构建 C 代码 并努力解决以下概念 在我的根级目录中 我有一些 cpp 文件和 CMakeLists txt 它们在 gen cpp 目录中成功生成了一些 thrift 代码 我的根级别 CMakeLists tx
  • 使用自定义对象的动态列表并且无法动态更改dataGrid的单元格属性

    我刚开始在 Stack 上发帖 我已经搜索了很长一段时间来解决与我类似的问题 我试图根据对象的布尔值动态地将 WinForms DataGridView 中的复选框从非只读更改为只读 它在调试模式下显示更改已经发生 但是一旦完全运行 应该只
  • 我不明白这个霍夫曼算法的实现

    template
  • 查询 XmlDocument 而不会出现“命名空间前缀未定义”问题

    我有一个 Xml 文档 它定义并引用了一些命名空间 我将其加载到 XmlDocument 对象中 据我所知 我创建了一个 XmlNamespaceManager 对象 用于查询 Xpath 问题是我收到命名空间 my 未定义的 XPath
  • 运行 SQL Server 报告服务时如何解决“远程服务器返回错误:(401) 未经授权”?

    我正在用这个code http www codeproject com Articles 25994 Creating a Proxy to Download PDF Reports from SRS从 SSRS 创建和下载 PDF 报告
  • 如何使用 SonarQube 的 C# 插件设置 FxCop 安装路径

    我正在尝试使用 SonarQube C 插件分析 NET C 项目 从C Plugin 3 0开始 即使sonar project properties中的 sonar fxcop mode skip FxCop也会自动执行 所以我将FxC
  • 使用 C# winforms 与 Windows 中的其他桌面应用程序交互

    我想知道是否可以与使用我的程序的其他程序进行交互 例如 单击另一个程序上的按钮等 我不确定这是否可能 但如果可能的话 有人可以提供一些 C 示例代码 Thanks 您可以创建消息并将其发送到其他进程 为此 您必须在 C 代码中使用 P In
  • 使用二维动态数组编写一个类

    我有一个家庭作业 我并不是在寻找任何人为我做这项工作 我只是在一个小方面遇到了麻烦 尽管我也接受其他方面的建议 任务是 使用二维动态数组编写一个类 构造函数传入数组的维度 构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组
  • 如何隐藏鼠标光标?

    我想问是否有人可以为我提供一个 C 代码 在其中我可以在按下特定键时隐藏 显示鼠标指针 我发现一些只为 TURBO C 编写的代码 它们都不能使用 dev c 甚至 Visual c 编译和运行 我尝试运行在 Dev C 中找到的代码 但我
  • 如何在C++中动态调用函数

    除了 boost Bind Function 之外 我如何在 C 中动态调用函数 PHP has obj new MyObject function doSomething obj gt function Objective C 有 MyO
  • 在 Outlook 中检索当前电子邮件正文

    在我的 Outlook 插件中 我想在功能区上添加一个按钮 因此当用户单击此按钮时 我想检索当前选定的电子邮件的正文 我有此代码 但它只检索收件箱中的第一封电子邮件 因为索引为 1 Microsoft Office Interop Outl

随机推荐

  • 使用 pecl oauth 为 LTI Outcomes 服务构建主体签名的 oauth xml 请求

    我正在使用 pecl oAuth 库 是否可以构建一个如下所示的正文签名的 oauth 请求 POST http www imsglobal org developers BLTI service handle php HTTP 1 0 H
  • 真正最小的口齿不清

    要使一种语言成为图灵完备且是 lisp 变体 所需的最小原语集是什么 看起来像 car cdr 和一些流量控制以及 REPL 的东西就足够了 如果有这样的清单就好了 假设只有 3 种数据类型 整数 符号和列表 就像 picolisp 中一样
  • 在android studio中创建AVD时出错

    我是 android studio 的新手 我的问题是当我尝试创建 AVD 时它的显示 未知错误 有关详细信息 请参阅 idea log 我正在 Windows 8 上工作 删除目录 home android avd 中的所有文件和文件夹
  • 奇怪的 Python Selenium 按钮点击行为

    我试图点击的部分 ul class btns right li a href class expand all View All Cards a li ul 我想很简单 但我似乎错过了一些东西 问题现在在页面下方更新了一点 xpath 不是
  • Docker compose 将本地目录映射到 dockerfile 卷

    我正在使用 Apache MySql Docker compose 设置 这一切都很好 然而 由于这是本地开发 因此问题出现了 Web 容器指向本地文件夹 而我需要 Apache 拥有该文件夹的权限 Using RUN mkdir www
  • WordPress:WP_Query 如何应用自定义帖子类型的搜索条件

    我有一个自定义帖子类型 photo 并且需要使用各种条件搜索与标题或描述与搜索关键字匹配的照片 包含LIKE search term 以 开始LIKE search term 等等 我有以下查询 但这不会根据 search term 请指引
  • Cython nogil 与 ThreadPoolExecutor 没有提供加速

    我假设如果我使用 Cython 编写代码nogil指令 这确实会绕过 gil 我可以使用ThreadPoolExecutor使用多个核心 或者 更有可能的是 我在实施过程中搞砸了一些事情 但我似乎不知道是什么 我使用 Barnes Hut
  • 使用 React-leaflet version3 的传单地图上的自定义按钮

    我是 React typescript 的新传单学习者 想要在地图上创建自定义按钮 单击该按钮后 将出现一个弹出窗口 我看到了很多例子 但它们都是基于旧版本的 我也尝试创建自己的例子 但没有成功 该文档也没有提供太多帮助 即使是功能性自定义
  • 我应该为这个带有 websockets 的 web 应用程序使用什么解决方案。活动MQ?

    我目前正在开发一个网络应用程序 它需要一个 websocket 连接来接收来自服务器的事件通知 客户端被分成组 并且组中的所有客户端必须接收相同的事件通知 我认为 ActiveMQ 可能可以支持这种模型 为每组客户端使用不同的队列 使用 s
  • 将 Oracle 外连接转换为 SQL Server

    我在将此 Oracle SQL 转换为 SQL Server 时遇到问题 这是查询 SELECT CM ModuleID CM ModuleDescription CM ImageIndex CASE WHEN CMAC ClassID I
  • 使用 Android 意图共享图像

    我正在尝试通过这样的共享意图来共享图像 Intent sharingIntent new Intent android content Intent ACTION SEND sharingIntent setType image png s
  • 如何使用 Pandas 从一个文件读取多个数据集?

    我有一个文件 其中包含由行分隔的多组数据 它看起来像 country1 0 9 1 3 2 9 1 1 country2 4 1 3 1 0 2 我想使用 Pandas 将整个文件读入多个数据帧 其中每个数据帧对应一个国家 地区 有什么简单
  • 如何从BroadcastReceiver获取数据到Activity?

    我编写了 SMS 应用程序 并为其编写了 BroadcastReceiver 我想从 BroadcastReceiver 获取数据到我的 Activity 中 那么如何获取它 我的广播接收器代码如下 public class SmsRece
  • Rails - 根据用户选择动态设置 time_zone

    感谢您对我的新网站功能之一的帮助 这是关于动态时区 根据要求用户可以从一组预定义时区 例如 us zones 中进行选择 当用户选择区域时 整个站点应设置 更新为时区 然而 目前新的时区还没有更新到 Apache 中 并且时区的更新仅在服务
  • 如果 ID 为数字,Bootstrap 手风琴将无法工作

    将 Bootstrap 升级到 4 2 1 版本后出现问题 在这个版本中 当我使用id 12 in accordion它不起作用 在以前的版本中 它可以很好地使用id 12 有任何想法吗 div div class card div cla
  • wait 命令不会等待子进程完成 c cpp c++

    我正在尝试编写一个 C 程序 该程序创建一个子进程 运行一个命令并将输出通过管道返回到父进程正在运行的命令的输入 我让父级执行 wait NULL 或 wait void pid 命令 但它不等待 这是代码 include
  • 尝试了解 CanActivate 和 CanActivateChild 之间的区别

    所以 我试图通过使用警卫来保护通往几条路线的通道 我正在使用以下路线来执行此操作 const adminRoutes Routes path admin component AdminComponent canActivate AuthGu
  • 在非线性优化函数“nloptr”中传递参数

    我最初的问题可以在这里找到 具有任意约束的 R 优化 https stackoverflow com questions 21611092 optimization in r with arbitrary constraints 21612
  • Ruby 中的双方括号

    给出以下代码 def map char charmap unless map charmap char unless map charmap char c input getc input ungetc c if c map end end
  • 从 C 语言文件中读取二维数组

    我正在尝试创建一个程序来从文件中读取二维数组 然后将其打印出来 该文件的设置使得第一行具有行数 然后是列数 之后绘制数组 示例如下 3 5 10 4 15 1 18 5 13 3 20 8 76 5 55 3 94 0 48 5 60 3