64,282
社区成员
发帖
与我相关
我的任务
分享
1、编写 fgets 函数的一个版本,叫做 tfgets,它 5s 钟过后会超时。
tfgets 函数接收和 fgets 相同的输入。如果用户在 5s 内不键入一个输入行,返回 NULL。
否则它返回一个指向输入行的指针。
2、下面是一段使用了 lambda 的用例,各位觉得这与 Boost.Lambda 库比较,如何?
#include <iostream>
#include <functional>
#include <vector>
int main()
{
using namespace std;
vector<int> v(10);
generate_n(v.begin(), v.size(), rand);
for_each(v.begin(), v.end(), [](int n) {
if (n % 2 == 0) cout << n << " "; });
return 0;
}
上面的实现错了,只能用于控制台输入,至于其他文件就不行了
根据 6#,使用 _kbhit(),但这是一种轮询方法,不知可有其他解决方法
char* tfgets(char *str, int n, FILE *stream)
{
long end = 5 * CLOCKS_PER_SEC + clock();
while (clock() <= end)
{
if (_kbhit())
return fgets(str, n, stream);
}
return NULL;
}