Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将二维数组保存到C中的文件中?_C_Arrays_File Io_Viola Jones - Fatal编程技术网

如何将二维数组保存到C中的文件中?

如何将二维数组保存到C中的文件中?,c,arrays,file-io,viola-jones,C,Arrays,File Io,Viola Jones,我是一名初级C程序员,目前正在从事一个使用C实现viola jones对象检测算法的项目。我想知道如何将二维数组中的数据存储到一个文件中,该文件可以方便地被不同的程序文件(例如main.C、header_file.h等)移植和访问 提前谢谢。在不知道您存储的数据类型的情况下,我会说将其存储为矩阵。您需要选择一个分隔符来分隔元素(制表符或空格是常用的选项,分别称为“tsv”和“csv”),然后选择一些东西来标记行的结尾(这里新行是一个不错的选择) 因此,保存的文件可能类似于: 10 162 1 5

我是一名初级C程序员,目前正在从事一个使用C实现viola jones对象检测算法的项目。我想知道如何将二维数组中的数据存储到一个文件中,该文件可以方便地被不同的程序文件(例如main.C、header_file.h等)移植和访问


提前谢谢。

在不知道您存储的数据类型的情况下,我会说将其存储为矩阵。您需要选择一个分隔符来分隔元素(制表符或空格是常用的选项,分别称为“tsv”和“csv”),然后选择一些东西来标记行的结尾(这里新行是一个不错的选择)

因此,保存的文件可能类似于:

10 162 1 5
7 1 4 12
9 2 2 0

您还可以将格式定义为在第一行中包含一些元数据——如果您想预分配内存,行和列的数量以及其他信息(如字符编码)可能会很有用。从简单开始,根据需要添加

没有足够的细节来确定你在寻找什么,但是你想要做什么的基本结构是这样的:

open file.csv for writing
for(iterate through one dimension of the array using i)
{
for(iterate through the other dimension of the array using j)
   { 
   fprintf(yourfilehandle,"%d,",yourvalue[i][j]);
   }
fprintf(yourfilehandle,"\n");
}
close your file
正如其他人所建议的那样,这将为您留下一个
.CSV
文件,这是一个非常好的选择,因为它很容易读入和解析,并且您可以在记事本或Excel中打开您的文件,并且可以毫无问题地查看它

这是假设您真的打算用C文件I/O来做这件事,这是一种非常有效的方法,有些人只是觉得它有点过时了

注意,这会在行尾留下一个无关的逗号。如果这让您感到不舒服,那么很容易执行前置和后置条件,只在需要的地方获得逗号。提示:它包括在第二个for循环内的条目之前打印逗号,减少内部for循环迭代的条目数,并分别在内部for循环之前和之后打印出每一行的第一个和最后一个特殊大小写。很可能,这很难解释


对于C样式的文件I/O和。

此链接可能会有所帮助:您要查找的内容称为序列化和取消序列化。建议的选项之一是json。我经常在PHP中使用json,并且觉得它非常方便。你想用文本还是二进制存储它?你能告诉我们更多关于你的数据吗?是整数、文本还是对象?你问错问题了。你应该问的问题是,“如果我要从一个文件初始化一个2d数组,文件的什么格式会使我的工作更简单?”回答这个问题后,你就回答了这个问题。话虽如此,
.csv
文件的结构本质上是一个2d数组……将其存储为文本。格式是你的选择,但我个人会选择csv。除非你正在移植到一个ebcdic平台(我强烈怀疑你是这样),否则你刚刚解决了99%的可移植性问题。此外,我还计划将其移植到数字信号处理器,以便.csv文件能正常工作吗?您的DSP甚至有文件系统吗?你是用C语言编程还是用汇编语言编程?DSP是用来处理信号而不是解析文本文件的,因此,考虑到DSP的级别有多低,您可能需要在字节级别定义格式。@alexroussos对DSP板的看法是正确的。我会检查一下,确保你能把文件写进去。我见过一些采用C语言并有文件系统的,所以这不是不可能的,但肯定不能保证。我使用的DSP是在cortex A8处理器上运行的开发板的一部分。该板在ubuntu 10.04上运行。有了这个设置,它能处理CSV文件吗?它们会被快速读取吗?@medz91如果你能写入某个挂载的文件系统,那么是的,这绝对有效。另一个需要考虑的是线末端。我使用的大多数CSV文件都有
\r\n
行结尾,但这不是必需的。