次に例を示します。
#include <stdio.h>
#include <string.h>
#define MAX_DIGITS 5
int
main ()
{
char buf[80];
char *s = NULL;
printf ("\n>>Enter string, %d digits or less: ", MAX_DIGITS);
s = fgets (buf, MAX_DIGITS+1, stdin);
printf ("strlen(buf)=%d, buf=%s, strlen(s)=%d, s=%s\n",
strlen(buf), buf, strlen(s), s);
return 0;
}
「MAX_DIGITS」および「MAX_DIGITS+1」を使用したサンプル出力:
>>Enter string, 5 digits or less: 1
strlen(buf)=2, buf=1
, strlen(s)=2, s=1
.
>>Enter string, 5 digits or less: 12
strlen(buf)=3, buf=12
, strlen(s)=3, s=12
.
>>Enter string, 5 digits or less: 123
strlen(buf)=4, buf=123
, strlen(s)=4, s=123
.
>>Enter string, 5 digits or less: 1234
strlen(buf)=5, buf=1234
, strlen(s)=5, s=1234
.
>>Enter string, 5 digits or less: 12345
strlen(buf)=5, buf=12345, strlen(s)=5, s=12345.
>>Enter string, 5 digits or less: 123456
strlen(buf)=5, buf=12345, strlen(s)=5, s=12345.
あなたは気づくでしょう:
#/桁がMAX_DIGITS未満である限り、リターンバッファは「\n」を保持します。
#/ Digits> = MAX_DIGITSの場合、「\n」は削除されます。
バッファはMAX_DIGITS+1に対応する必要があります