2010-09-07 8 views
0

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?

+2

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

+0

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 ". –

Répondre

8

chdir peut être utilisé avec chaîne arbitraire. const modificateur signifie qu'il ne modifiera pas votre chaîne.

1

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 *.

Questions connexes