从文件中获取多个矩阵并将其存储在整数指针中

用户名

void read_matrices(int ** A,int ** B,int ** C,int * m,int * n,int * p,char *文件)

我想从如下所示的外部文件中读取两个矩阵:

 3 
 2 
 4 
 1 2 
 3 4 
 5 6 
 7 8 9 10 
 11 12 13 14

其中第一行是矩阵A的行数,数字2是矩阵A的列数,矩阵B的行数,第三行是矩阵B的列数。尝试此操作以获取m,n和p,但出现段错误

FILE * fp = fopen(file, "r");
char a, b, d;
char c = getc(fp);
int i = 0;
while (c != EOF) {
    if (i == 0) {
        a = c;
        i++;
    }
    else if (i == 1) {
        b = c;
        i++;
    }
    else if (i == 2) {
        d = c;
        i++;
    }
    else
        break;
}
fclose(fp);
戴维·C·兰金

很明显,您需要一些帮助。这是一个仅举一反三的例子。注意:B与其将读取可变数量的元素的示例复杂化,还不4如将其编码为读取数据文件中存在的元素,而是对其进行简单编码另外,fscanf由于每个行中都有可变的数字和不同的数据要读取,因此还用于从文件中读取数据。与逐字符读取文件相比,这简化了代码,因为读取的信息类型为int通读示例(内联注释),如果您有任何问题,请告诉我:

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

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

    int *A, *B, *C, m, n, p;  /* note *C is unused */
    char *file;

    /* test for required filename */
    if (argc < 2) {
        fprintf (stderr, "\n Error: insufficient input. usage: %s filename\n\n", argv[0]);
        return 1;
    }

    /* assign filename, open file, validate opening */
    file = argv[1];  /* you don't need 'file', you can simply use argv[1] */

    FILE *fp = fopen (file, "r");
    if (!fp) {
        fprintf (stderr, "\n Error: file open failed for file '%s'\n\n", argv[0]);
        return 1;
    }

    /* read & output m, n, p */
    fscanf (fp, "%d\n%d\n%d\n", &m, &n, &p);
    printf ("\n m: %d\n n: %d\n p: %d\n\n", m, n, p);

    /* allocate memory for A and set values to null */
    A = calloc (m * 2, sizeof(int));

    /* read A */
    int i = 0;
    for (i = 0; i < m; i++)
        fscanf (fp, "%d %d\n", &A [i*2], &A[i*2 + 1]);

    /* output A */
    printf ("Array A\n");
    for (i = 0; i < m; i++)
        printf (" [ %d  %d ]\n", A [i*2], A[i*2 + 1]);

    /* allocate memory for B and set values null */
    B = calloc (n * p, sizeof(int));

    /* read B */
    for (i = 0; i < n; i++)
        fscanf (fp, "%d %d %d %d\n", &B [i*p], &B[i*p + 1], &B[i*p + 2], &B[i*p + 3]);

    /* output B */
    printf ("\nArray B\n");
    for (i = 0; i < n; i++)
        printf (" [ %2d %2d %2d %2d ]\n", B [i*p], B[i*p + 1], B[i*p + 2], B[i*p + 3]);

    printf ("\n");

    /* close FP & free allocated memory */
    fclose (fp);
    if (A) free (A);
    if (B) free (B);

    return 0;
}

输出:

$ ./bin/rmf dat/array.dat

m: 3
n: 2
p: 4

Array A
 [ 1  2 ]
 [ 3  4 ]
 [ 5  6 ]

Array B
 [  7  8  9 10 ]
 [ 11 12 13 14 ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从txt文件读取整数并将其存储到数组中

从文件中获取输入并将其存储在变量中

如何从文件中读取数据并将其存储到矩阵中

如何读取文件并将其内容存储在 C 中的矩阵中?

从变量中获取输入并将其存储到相同的变量中,但存储在diff文件中

从未分离的txt文件中逐元素获取元素,并将其放入矩阵中

如何从多个文件中读取数据并将其存储在另一个文件中

如何在字符串中获取向量位置并将其存储为整数?

读取文本文件并将其保存在基于Matlab Matlab的多个矩阵中

如何读取多维数组并将其存储在指针中

如何从 Web 获取 excel 文件并将其存储在 azure blob 存储中

使用python将列表转换为整数并将其存储在csv文件中

从文本文件读取整数并将其存储到数组中

如何从文件中提取多个数据并将其存储在csv文件中?

如何从文件中获取所有JSON名称并将其存储到字符串中

如何从目录中的许多图像获取face_recognition编码并将其存储在CSV文件中?

如何获取多个文本框的值并将其存储在变量中

在python中,下载html文件并将其存储在文件中

合并2个整数并将其存储在ulong中

以整数/ string取输入并将其存储在数组中

是否有任何功能可以从多个列的多个行和中获取结果并将其保存在新矩阵上?

如何获取多个动态文本文件的内容并将其存储在一个文本文件和mysql-Python 2.7中?

使用opencv裁剪图片中的多个面孔并将其存储在文件夹中

从文件中读取多个字节并将其存储以进行C ++比较

如何从文件中读取“不均匀”矩阵并将其存储到2D数组中?

从文件中读取矩阵,并将其提供给main

如何获取所有音乐的歌词并将其存储在文件中?

从文件中读取数据并将其存储在列表Python中

从表中抓取数据并将其存储在 csv 文件中