fgets()
これは、末尾の一連の空白文字ではなく、返されるバッファーに含まれる改行文字です。 を null ターミネーターに置き換えます\n
。
/* fgets() will not read the new-line if
there is not sufficient space in the buffer
so ensure it is present. */
char* nl_ptr = strrchr(buff, '\n');
if (nl_ptr) *nl_ptr = '\0';
で行を折り返しているように見えるため、一連の空白文字があるように見える場合がありますが、stdout
これは で読み取られる改行文字が存在するためfgets()
です。
文字列を印刷するとき、文字列[]
の内容をより明確にするために、文字列を内部に配置すると便利です。
printf("first line of \"conf\": [%s]\n", buff);
これにより、によって取得された改行文字の存在がfgets()
より見やすくなります。
webroot()
関数がローカル変数のアドレスを返すことに注意してくださいbuff
。これはエラーであり、未定義の動作です。strdup()
if available またはmalloc()
and otherを使用して、新しいバッファを動的に割り当てる必要がありstrcpy()
ます。
return strdup(buff);
の呼び出し元は戻り値を受け取るwebroot()
必要があります。free()
障害NULL
が発生した場合に返される手配。