将包含由空格和行分隔的数字矩阵的 txt 文件读取到数组中

发布于 2024-08-05 05:15:42 字数 332 浏览 5 评论 0原文

我一直在尝试将包含格式化矩阵(9x9)的 txt 文件读取到 int 数组中。用户使用 NSOpenPanel 选择该 txt 文件。

txt 文件示例:

2 7 9 1 6 2 1 1 1
9 1 3 3 4 0 6 8 5
5 3 2 9 3 8 6 7 0
6 0 9 2 5 6 4 8 0
3 2 0 4 0 5 0 6 0
4 0 5 4 0 3 9 0 0
6 4 1 3 2 5 7 2 0
6 5 7 2 1 3 0 9 3
1 0 2 7 5 1 0 0 0

我对 Mac 编程真的很陌生,所以任何帮助将不胜感激。

I've been trying to read a txt file containing a formatted matrix (9x9) into an int array. The txt file is selected by the user using NSOpenPanel.

An example txt file:

2 7 9 1 6 2 1 1 1
9 1 3 3 4 0 6 8 5
5 3 2 9 3 8 6 7 0
6 0 9 2 5 6 4 8 0
3 2 0 4 0 5 0 6 0
4 0 5 4 0 3 9 0 0
6 4 1 3 2 5 7 2 0
6 5 7 2 1 3 0 9 3
1 0 2 7 5 1 0 0 0

I'm really new to mac programming so any help would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时常饿 2024-08-12 05:15:42

您可以使用 Objectice-C 来完成此操作
类似 NSString 和 NSArray 的类
读取一个完整的文件只是
NSString *filesContent = [[NSString alloc] initWithContentsOfFile:@"file.txt"];

然后你可以在空白处分割该数组,例如
NSArray rows = [filesContent elementsSeparatedByString:@"\r\n"];
然后你可以在空白处分割行。

或者你用老式的 C 方式来做。
使用 fopen 打开文件
逐行读取文件
分割线,例如使用 sscanf
并填充一个数组
int arr[9][[9];

伪代码(未经测试,只是为了给您一个想法)

char buf [2048];
char *pc;
int arr[9][[9];
int i_rval;
int row[9];

File *fin = fopen("file_with_9_x_9_matrix.txt");
/* error handling */
int i = 0;
while ((pc = fgets(buf, sizeof(buf), fin)) != NULL) {
    row = arr[i];
    i_rval = sscanf("%d %d %d %d %d....", &row[0], &row[1]);
    /* error handling */
    i++;
}

或者您可以混合使用 Objectice-C 和 C 的一些东西。

You can either do it with Objectice-C using
classes loke NSString and NSArray
reading a complete file is just
NSString *filesContent = [[NSString alloc] initWithContentsOfFile:@"file.txt"];

then you can split that array e.g at whitespace with something like
NSArray rows = [filesContent componentsSeparatedByString:@"\r\n"];
then you can split the rows at whitespace.

And or you do it the old faschioned C way.
Opening the file with fopen
reading the file line by line
splitting the line e.g. with sscanf
And filling an Array
int arr[9][[9];

Pseudo Code (not tested, just to give you an idea)

char buf [2048];
char *pc;
int arr[9][[9];
int i_rval;
int row[9];

File *fin = fopen("file_with_9_x_9_matrix.txt");
/* error handling */
int i = 0;
while ((pc = fgets(buf, sizeof(buf), fin)) != NULL) {
    row = arr[i];
    i_rval = sscanf("%d %d %d %d %d....", &row[0], &row[1]);
    /* error handling */
    i++;
}

Or you can mix something out of Objectice-C and C.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文