ver varios todos otro mover los ejemplos directorios directorio crear copiar contenido consola comandos carpeta basicos archivos archivo c linux ubuntu dir readdir

todos - mover varios archivos en linux



Listado de archivos en Directorio en Ubuntu (2)

Si indent rd.c sangría a su programa con indent rd.c entonces compile su programa con gcc -Wall -g rd.c -o rd obtiene

rd.c: In function ''main'': rd.c:21:22: warning: assignment makes pointer from integer without a cast [enabled by default] rd.c:21:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses]

Entonces olvidaste paréntesis, tu while debería ser

while((dirpent=readdir(dirp)) !=NULL)

Por favor compile su programa con todas las advertencias (y mejore hasta que se hayan ido todas) antes de hacer preguntas. Utilice el depurador gdb (y su comando bt ) para averiguar por qué un programa falla con SIGSEGV .

No olvide leer detenidamente la documentación, como readdir (3) man page y Advanced Linux Programming book.

Estoy tratando de enumerar los archivos en el directorio principal del directorio actual, pero cuando intento ejecutar este programa desde la terminal obtengo el error de segmentación. ¿Qué estoy haciendo mal? Aquí está el código:

#include <stdio.h> #include <stdlib.h> #include <dirent.h> int main(int argc, char *argv[]) { struct dirent *dirpent; DIR *dirp; if(argc!=2) { printf("Cant continue with the program/n"); return 0; } dirp= opendir(argv[1]); if(dirp) { while(dirpent=readdir(dirp) !=NULL) printf("%s/n",dirpent->d_name); closedir(dirp); } return 0; }


dirpent=readdir(dirp) !=NULL

debiera ser

(dirpent = readdir(dirp)) != NULL

Su expresión actual se analiza como dirpent = (readdir(dirp) != NULL) , que configurará dirpent en 0 o 1.