更新: OSX El Capitan,Xcode 7.3 输入:
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890001
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFERSIZE 2048
int
main()
{
char buffer[BUFFERSIZE];
printf("Enter a message: \n");
while (fgets( buffer, BUFFERSIZE, stdin) != NULL)
{
printf("%s\n", buffer);
}
return 0;
}
在终端中编译并运行它。 [。/测试] 然后输入一行字符,长度为1024.它不起作用,无法打印缓冲区。当我输入1023时,它将打印这1023个字符。它可以打印大于1024个字符,这些字符从本地打开文件读取。 那么,stdin最大长度是1024?但是显示ARG_MAX是(256 * 1024), 我的代码出了什么问题? 我有一个参考: How to read from stdin with fgets()?; c-read-line-from-stdin-with-fgets-in-function
答案 0 :(得分:1)
代码本身没有任何问题。问题是终端驱动程序的缓冲区限制为1 KiB,因此您输入的内容不能超过1023个字符加上换行符。大多数系统都有类似的限制。从历史上看,限制要小得多,比如256字节。