problema con puntero a cadena
Hola, estoy empezando en esto del c y tengo un problema. Estoy haciendo un programa tipo ls, que muestra los archivos de un directorio. Como tengo que implementar algunas opciones (-l -a -r ...) me es más fácil poner una función aparte que me dé el directorio (usando getcwd) que hacerlo en el código directamente, con lo que tendrÃa que repetirlo varias veces, una si sólo me pasan el nombre del programa desde la shell y otra si después de las opciones no se especifica un directorio a listar, es decir, tendrÃa que usar el path actual si desde la shell se hace:
>list ó
>list -la, pero no si se hace algo asi:
>list -l /home
Perdonad pq sé que es un poco lioso pero lo que pregunto es lo siguiente. Este es mi código:
int getDirectorio(char*);
int main(int argc, char *argv[]) {
int error = 0;
char directorio[PATH_MAX];
DIR *dirp;
struct dirent *direntp;
if (argc == 1) {
getDirectorio(directorio);
}
}
int getDirectorio(char *dir) {
int error = 0;
if (getcwd(dir, PATH_MAX) == NULL) { //****
perror("No se tuvo acceso al directorio");
error=1;
}
return(error);
}
al compilar este trozo me da un fallo que dice que en la lÃnea que os he marcado con asteriscos comparo un puntero con un entero, y no sé ya como ponerlo.
Os agradecerÃa cualquier ayuda posible. Un saludo a todos
>list ó
>list -la, pero no si se hace algo asi:
>list -l /home
Perdonad pq sé que es un poco lioso pero lo que pregunto es lo siguiente. Este es mi código:
int getDirectorio(char*);
int main(int argc, char *argv[]) {
int error = 0;
char directorio[PATH_MAX];
DIR *dirp;
struct dirent *direntp;
if (argc == 1) {
getDirectorio(directorio);
}
}
int getDirectorio(char *dir) {
int error = 0;
if (getcwd(dir, PATH_MAX) == NULL) { //****
perror("No se tuvo acceso al directorio");
error=1;
}
return(error);
}
al compilar este trozo me da un fallo que dice que en la lÃnea que os he marcado con asteriscos comparo un puntero con un entero, y no sé ya como ponerlo.
Os agradecerÃa cualquier ayuda posible. Un saludo a todos
Yo creo que debes hacer un cast. Prueba con esto (reemplazando a esa linea)
if ((int)getcwd(dir, PATH_MAX) == NULL) { //****
o sino esto:
if (getcwd(dir, PATH_MAX) == (char*)NULL) { //****
if ((int)getcwd(dir, PATH_MAX) == NULL) { //****
o sino esto:
if (getcwd(dir, PATH_MAX) == (char*)NULL) { //****
