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

时间:2009-09-22 05:15:09

标签: objective-c macos matrix text-files

我一直在尝试将包含格式化矩阵(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编程的新手,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用Objectice-C执行此操作 类喜欢NSString和NSArray 阅读完整的文件只是 NSString * filesContent = [[NSString alloc] initWithContentsOfFile:@“file.txt”];

然后你可以将这个数组分开,例如在空白处 NSArray rows = [filesContent componentsSeparatedByString:@“\ 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.