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.