我试图在函数中使用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)
指定应用以下转换说明符
指向类型指针指向d
或i
的参数;下面的o
、u
、x
、X
、n
、long int
、unsigned long int
、a
、A
或e
转换说明符适用于
具有指向E
;[...]的类型指针的参数
也就是说,
当您正确地传递f
时,请在函数中使用它来限制F
(索引)以避免分配的内存溢出。
您还应该检查g
是否成功(将返回值与应扫描的项目数进行比较)。仅检查aginstG
敌人是不够的,double
在匹配失败时也可以返回0,这也需要处理。
关于c - 读取用户输入并在C函数中使用EOF修改数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36124301/