如何在C中读取.txt文件并将数字存储到2D数组中

如何在C中读取.txt文件并将数字存储到2D数组中,c,C,因此,我的教授给我的.txt文件中有以下矩阵: 3.000000,1.000000,1180.000000,1955.000000,221900.000000 3.000000,2.250000,2570.000000,1951.000000,538000.000000 2.000000,1.000000,770.000000,1933.000000,180000.000000 4.000000,3.000000,1960.000000,1965.000000,604000.000000 3.0

因此,我的教授给我的.txt文件中有以下矩阵:

3.000000,1.000000,1180.000000,1955.000000,221900.000000
3.000000,2.250000,2570.000000,1951.000000,538000.000000
2.000000,1.000000,770.000000,1933.000000,180000.000000
4.000000,3.000000,1960.000000,1965.000000,604000.000000
3.000000,2.000000,1680.000000,1987.000000,510000.000000
4.000000,4.500000,5420.000000,2001.000000,1230000.000000
3.000000,2.250000,1715.000000,1995.000000,257500.000000
3.000000,1.500000,1060.000000,1963.000000,291850.000000
3.000000,1.000000,1780.000000,1960.000000,229500.000000
3.000000,2.500000,1890.000000,2003.000000,323000.000000
我假设能够将每行的前4个元素存储到一个2D数组中。但是,我似乎不知道如何对2D阵列执行此操作。有什么建议吗

编辑: 以下是我到目前为止的情况:

int main(int argc, char *argv[]){
FILE *train; 
FILE *test; 
int row,cols;
int num = 0; 
char single [150]; 
char single1 [150]; 
train = fopen(argv[1],"r");
test = fopen(argv[2],"r");
if(argc < 3){
    printf("error\n");
    return 0; 
}
char *a = fgets(single,150,train);
int attributes = atoi(a); 
char *b = fgets(single,150,train); 
int examples = atoi(b); 
printf("%d\n%d\n\n",attributes,examples);
int matX[attributes][examples]; 

for(row = 0; row < attributes;row++){
    for(cols = 0; cols < examples;cols++){
        matX[row][cols] = atoi(fgets(single,150,train)); 
    }
}
printArray(row,cols,matX);
intmain(intargc,char*argv[]){
文件*列车;
文件*测试;
int row,cols;
int num=0;
单字符[150];
char single1[150];
列车=fopen(argv[1],“r”);
测试=fopen(argv[2],“r”);
如果(argc<3){
printf(“错误\n”);
返回0;
}
char*a=fgets(单列车,150列车);
int attributes=atoi(a);
char*b=fgets(单列车,150列车);
int示例=atoi(b);
printf(“%d\n%d\n\n”,属性,示例);
int matX[属性][示例];
对于(行=0;行<属性;行++){
for(cols=0;cols

attributes是我必须从每行存储的元素数,examples是矩阵中的行数。这种方法可行吗?

您可以尝试
sscanf

char line ="3.000000,1.000000,1180.000000,1955.000000,221900.000000";
float v0, v1, v2, v3;
sscanf(line, "%f,%f,%f,%f", &v0, &v1, &v2, &v3);

您能否至少向我们展示一下您认为2D数组是如何声明的?您遇到了问题的哪一部分?回答了很多次,例如,等等(只需查看浏览器窗口右侧的“相关”下)将该文件逐行读取到一个缓冲区中,然后考虑给定的示例,然后将2D数组值设置为V0,ETCFANSE:5个值和4个代码>浮点< /代码>。谢谢,但是用sSCANF,我想我必须知道我在用多少个变量。对于这个任务,我必须扫描文件,好像我不知道我在用多少。我正在查看。到fscanf,我离弄清楚它更近了。