How is the working of fflush(stdin) changing the output in below code?

戏子无情 提交于 2019-11-26 12:33:31

In no some magical way.

First of all, fflush(stdin); invokes undefined behavior. Don't use that.

Quoting C11, chapter §7.21.5.2, The fflush function (emphasis mine)

If stream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.

That said,

for(j=0;j<n;j++)
{
    fflush(stdin);
    scanf("%d",&arr[i]);
}

looks pretty wrong to me, arr[i] is not guaranteed to be within bounds. It should rather be

scanf("%d",&arr[j]);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!