我正在编写一个小型C程序,该程序必须接受大于4096字节的输入流。
我确实在这里找到了推荐使用setvbuf()的帖子:
我仍然很难把它付诸实践–这是我正在努力的部分代码:
int main(void)
{
#define MAX_STRING_SIZE 7168
char input_string[MAX_STRING_SIZE];
printf( "Input: " );
setvbuf( stdin, NULL, _IONBF, 0 );
fgets( input_string, MAX_STRING_SIZE-1, stdin );
printf( "\n" );
printf( "%s", input_string );
}
Run Code Online (Sandbox Code Playgroud)
有人成功增加了此输入缓冲区吗?
我的环境:带有build-essential软件包的Ubuntu 10.10
谢谢!
现在,您正在使用_IONBF,这意味着没有缓冲。_IOFBF相反,使用它可能是一个很好的开始(这是完全缓冲)。为了增加缓冲区大小,您还需要指定较大的缓冲区大小作为第四个参数,例如:
setvbuf(stdin, NULL, _IOFBF, 16384);
Run Code Online (Sandbox Code Playgroud)
这将动态分配缓冲区空间。根据情况,您可能希望改为将缓冲区传递给它:
char mybuffer[32768];
setvbuf(stdin, mybuffer, _IOFBF, sizeof(mybuffer));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7428 次 |
| 最近记录: |