Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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_File_Io - Fatal编程技术网

C 将数据从文件读入数组

C 将数据从文件读入数组,c,file,io,C,File,Io,如果我有一个选项文件,内容如下: size = 4 data = 1100010100110010 我有一个2d大小*大小的数组,我想将数据中的值填充到其中,最好的方法是什么 为了澄清,对于我的示例,我想要一个如下的数组: int[4][4]数组={1,1,0,0},{0,1,0,1},{0,0,1,1},{0,0,1,0}。(不是真正的代码,但你明白了) 大小可以是任何数字 我想我必须读入大小,maloc一个数组,然后可能读入一个充满数据的字符串,然后循环遍历数据中的每个字符,将其转换为in

如果我有一个选项文件,内容如下:

size = 4
data = 1100010100110010
我有一个2d大小*大小的数组,我想将数据中的值填充到其中,最好的方法是什么

为了澄清,对于我的示例,我想要一个如下的数组:

int[4][4]数组={1,1,0,0},{0,1,0,1},{0,0,1,1},{0,0,1,0}。(不是真正的代码,但你明白了)

大小可以是任何数字

我想我必须读入大小,maloc一个数组,然后可能读入一个充满数据的字符串,然后循环遍历数据中的每个字符,将其转换为int并将其粘贴到适当的索引中?但我真的不知道该怎么做,已经找了一段时间没有运气了

任何帮助都很酷!:)

循环

FILE *fp = fopen("waaa.txt", "r");
if(fp == null) { /* bleh */ return; }

int j = 0;
while(char ch = fgetc(fp)) {
    for(int i = 0; i < 4; ++i) {
        array[j][i] = ch;
    }
    ++j;
}
FILE*fp=fopen(“waaa.txt”、“r”);
如果(fp==null){/*bleh*/return;}
int j=0;
while(char ch=fgetc(fp)){
对于(int i=0;i<4;++i){
数组[j][i]=ch;
}
++j;
}
我不确定fgetc()语法。。看看吧。它一次读取一个字符。

int进程文件(int**array,char const*文件名)
int process_file(int **array, char const *file_name)
{
    int size = 0;
    FILE *file = fopen(file_name, "rt");
    if(fp == null)
        return -1;//can't open file
    char line[1024]; //1024 just for example
    if(fgets(line, 1024, file) != 0)
    {
        if(strncmp(line, "size = ", 7) != 0)
        {
            fcloes(file);
            return -2; //incorrect format
        }
        size = atoi(line + 7);
        array = new int * [size];
        for(int i = 0; i < size; ++i)
            array[i] = new int [size];
    }
    else
    {
        fclose(file);
        return -2;//incorrect format
    }
    if(fgets(line, 1024, file) != 0)
    {
        if(strncmp(line, "data = ", 7) != 0)
        {
            fcloes(file);
            for(int i = 0; i < size; ++i)
                delete [] array[i];
            delete [] array;
            return -2; //incorrect format
        }
        for(int i = 7; line[i] != '\n' || line[i] != '\0'; ++i)
            array[(i - 7) / size][(i - 7) % size] = line[i] - '0';
    }
    else
    {
        fclose(file);
        for(int i = 0; i < size; ++i)
            delete [] array[i];
        delete [] array;
        return -2; //incorrect format
    }
    return 0;
}
{ int size=0; 文件*FILE=fopen(文件名,“rt”); 如果(fp==null) return-1;//无法打开文件 字符行[1024];//1024仅举个例子 如果(fgets(第1024行,文件)!=0) { 如果(strncmp(行,“size=,7)!=0) { fcloes(文件); return-2;//格式不正确 } 尺寸=atoi(第+7行); 数组=新整数*[size]; 对于(int i=0;i

不要忘记在程序结束前删除数组

你的方法很好。向我们展示您迄今为止所做的尝试以及您的困境。