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が発生した場合に返される手配。