C语言 函数读取一个文件并返回一个双数组

brc7rcf0  于 2023-04-29  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在写一个函数来读取一个文本文件并返回一个双精度数组。该函数接受文件名的输入,并读取其中的值,以返回与数组相同的值。
但是,函数调用者导致错误error: assignment to expression with array type

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

#define MAX_LINES 300
#define MAX_LEN 100

double new_double[300] ;

double fileopener(char *fileinput)
{

    char data[MAX_LINES][MAX_LEN] ;

    FILE *file ;
    
    file = fopen(fileinput, "r") ;

    if ( file == NULL )
    {
        printf("Error opening file yo\n") ;
    }

    int line = 0 ;

    while ( !feof(file) && !ferror(file) )
        if (fgets(data[line], MAX_LEN, file) != NULL )
        {
            new_double[line] = strtod(data[line], NULL) ;
            printf("The double value read is: %f\n", new_double[line]) ;
            line++ ;
        }

    fclose(file) ;

    printf("Done\n\n") ;

    return new_double;  
}

int main(){
    double t[300] ;
    char *filename = "AbsTime_v.txt" ;

    t = fileopener(filename) ;
    
    return 0;
}

请你指出我漏掉了什么。

qlvxas9a

qlvxas9a1#

  • 你不能从double返回类型的函数返回double*
  • 即使更改了,返回一个指向全局变量的指针也是一个可怕的做法。相反,使用调用的分配,其中调用者沿着分配的缓冲区作为参数之一传递。
  • t = fileopener(filename) ;在C中不可能对数组类型使用赋值。语言就是这样。同样,t应该作为参数传递,以填充函数。

相关问题