【发布时间】:2016-03-21 06:15:22
【问题描述】:
我尝试将 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 中使用 * 在参数中通过引用传递,但我没有得到正确的结果。
【问题讨论】:
-
第一:什么是'Fn'?第二:你期望的结果是什么,你得到的结果是什么。更多细节会有所帮助
-
您不仅需要使用
"%lf"作为格式说明符来读取double值,还需要检查您是否从scanf()返回1;如果输入中有非数字、非空格字符,您将得到 0(与 EOF 不同),并且您的程序可能会在崩溃前运行一段时间。您还应该确保不要超出函数内部length中的条目数 - 超出数组范围写入是“未定义行为”的不良情况。
标签: c arrays parameters scanf eof