Il est pas une séquence de caractères d'espacement à la fin, mais le caractère de nouvelle ligne, comme fgets()
'il comprend dans le tampon de retour: remplacer le \n
avec un terminateur null:
/* 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';
Il peut Apparaît comme s'il y avait une séquence de caractères blancs à cause de la ligne apparente sur stdout
, mais cela est dû à la présence du caractère de nouvelle ligne lu par fgets()
.
Lorsque les chaînes d'impression je trouve utile de placer la chaîne à l'intérieur []
pour rendre le contenu de la chaîne plus claire:
printf("first line of \"conf\": [%s]\n", buff);
cela rendrait la présence du caractère de nouvelle ligne obtenue par fgets()
plus visible.
Notez que la fonction webroot()
renvoie l'adresse de la variable locale buff
: il s'agit d'une erreur et d'un comportement non défini. Un nouveau tampon devra être réparti de façon dynamique, en utilisant strdup()
si elle est disponible ou malloc()
et strcpy()
autrement:
return strdup(buff);
l'appelant de webroot()
doit free()
la valeur retournée. Disposez que NULL
est renvoyé si une erreur se produit.
Selon le système d'exploitation, vous pouvez également avoir un caractère '\ r'. –
Merci beaucoup pour la bonne explication. Maintenant ça marche comme un charme :) Merci encore !!! –