chdir
peut être utilisé pour les chemins de caractères constants (il faut const char *
), mais pas pour les chemins entrés par l'utilisateur (car ils ont le type char *
). Y at-il un moyen de contourner cela?Comment changer le répertoire de travail en C?
Répondre
chdir
peut être utilisé avec chaîne arbitraire. const
modificateur signifie qu'il ne modifiera pas votre chaîne.
Pour développer sur Roman Cheplyaka's answer, qualificateurs de type peut toujours être ajouté aux types de pointeur, mais pas supprimé. Cela signifie qu'une fonction qui prend un paramètre const char *
indique vraiment qu'il peut prendre un char *
ou un un const char *
(ce qui signifie en fait qu'il est prometteur de ne pas modifier le contenu de la chaîne).
De même, une fonction qui a un paramètre volatile char *
peut prendre soit un char *
ou un volatile char *
comme argument réel, et une fonction qui prend un paramètre const volatile char *
peut prendre l'une quelconque des char *
, const char *
, volatile char *
ou const volatile char *
.
Quel est le problème avec chdir()? Il peut certainement être utilisé avec les chemins fournis par l'utilisateur ... L'avez-vous essayé? Avez-vous échoué? Comment? Publiez du code ... – Juliano
Suite à la réponse de Roman: en général, un qualificatif 'const' sur un paramètre de fonction signifie que la fonction ne tentera pas de modifier ce que vous passez, donc * peut * être une constante de chaîne, pas qu'elle * A * être une constante. Dans 'T const *' (quel que soit le type T), 'const' signifie fondamentalement" lecture seule ". –