我有一个文本文件,如下所示:
a 1 2 3 4
b 5 6 7 8
c 9 1 2 3
d 4 5 6 7
我需要 C 代码根据提供的输入从我的文本文件中读取一列。例如,如果我将 1 传递给 C 代码,我需要输出为第一列的一维数组:
1
5
9
4
如果我将 3 传递给代码,那么它会输出第三列:
3
7
2
6
我正在使用 MATLAB 将输入传递给 C 代码coder.ref
。
我不会为你写代码,所以这里有一些提示:
您在这里有几个选择,最简单的一个是:
从文件中读取所有数据,然后仅显示所需的列。
您可以通过使用 temp = fgetc(FILE *stream)
浏览文件并执行以下操作来做到这一点,
if(temp == ' ') j++;
和if(temp == '\n') i++;
,
i
作为矩阵的行和j
列。
最后,您将需要一个函数将所有内容放在temp
一起并将您的字符串(字符数组)转换为整数。
如果您在 Unix/Linux 系统上,您可以使用命令行工具(例如cut
)预处理您的文件以提取列。
假设您的矩阵位于名为 data.txt 的文件中。然后您可以执行以下操作:
% cat data.txt
a 1 2 3 4
b 5 6 7 8
c 9 1 2 3
d 4 5 6 7
% cut -d " " -f 2 < data.txt
1
5
9
4
-d 选项指定文本文件中列之间的分隔符。-f 指定要删除的列。您可以编写一个可以获取列号并cut
为您运行的 shell 脚本。