我试图在函数中使用EOF作为用户输入,并相应地修改数组,所以在主函数中就是这个值。我试过用谷歌搜索和阅读人们的答案,但我还是无法让它发挥作用。。

void Get_Data(double data[], double original[], int length)
{
    int count = 0;
    double value = 0;
    printf("Enter data and Ctrl + D when you're done(Ctrl + Z for Windows): \n");

    while (scanf("%f", &value) != EOF)
    {
        data[count] = value;
        original[count] = data[count];
        count++;
    }
    printf("%f\n", data[1]);
}

int main()
{
    int i;
    double sum, original[4] = {0}, datas[4] = {0};
    Get_Data(datas, original, 4); // I'm just trying to get this to work

    system("pause");
    return 0;
}

我读到在参数中使用*在C中传递引用,但没有得到正确的结果。

最佳答案

要扫描double值,需要使用%lf格式说明符。
从第7.21.6.2章的C11
l (ell)指定应用以下转换说明符
指向类型指针指向di的参数;下面的ouxXnlong intunsigned long intaAe转换说明符适用于
具有指向E;[...]的类型指针的参数
也就是说,
当您正确地传递f时,请在函数中使用它来限制F(索引)以避免分配的内存溢出。
您还应该检查g是否成功(将返回值与应扫描的项目数进行比较)。仅检查aginstG敌人是不够的,double在匹配失败时也可以返回0,这也需要处理。

关于c - 读取用户输入并在C函数中使用EOF修改数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36124301/

10-09 07:16