Buenos días, tengo un problema al parsear una cadena de un archivo, llevo tres días tratando de solucionarlo, así que recurriré a ustedes.
El programa parsea esta linea de un archivo:
Código C:
Ver original# Depends on: fontconfig-32 freeglut-32 xorg-libxcomposite-32 xorg-libxcursor-32 xorg-libxinerama-32 xorg-libxrandr-32 xorg-libxxf86dga-32 alsa-lib-32 libpng-32 libjpeg-32 prelink
El problema está en que me imprime siempre un residuo de la cadena anterior, a ver... este es el código:
Código C:
Ver originalint main(int argc, char *argv[]) {
char *pkgfile = search_pkgfile("wine");
char *test;
while ((test = dependencies_pkgfile(pkgfile)) != NULL) {
}
return 0;
}
char *dependencies_pkgfile (char *dir_pkgfile)
{
FILE
*pkgfile
= fopen(dir_pkgfile
, "r"); static int c_n = 0;
static char depends_p[2000];
char *depends_po = depends_p;
while ((fgets(depends_p
, sizeof(depends_p
), pkgfile
) != NULL
)) { if (strncmp(depends_p
, "# Depends on:", 13) == 0) { depends_po = (depends_po+c_n)+13;
while (!(isalpha(*depends_po
)) && (*depends_po
!= '\0' && depends_po
++)); if (*depends_po == '\0') {
return NULL;
}
else {
depends_po = depends_po-1;
}
int c_d = 0;
while (*depends_po != '\0' && depends_po++) {
if ((*depends_po == ' ' || *depends_po == '\0') && *(depends_po-1) != ' ') {
depends[c_d] = '\0';
return depends;
}
else if ((isalpha(*depends_po
)) || (isdigit(*depends_po
)) || *depends_po
== '-') { depends[c_d] = *depends_po;
c_d++;
c_n++;
}
}
return NULL;
}
}
return NULL;
}
Y me imprime así:
Código HTML:
Ver originalfontconfig-32
freeglut-32
xorg-libxcomposite-32
xorg-libxcursor-32
r-32 #Esto no deberia imprimirlo
xorg-libxinerama-32
xorg-libxrandr-32
xorg-libxxf86dga-32
alsa-lib-32
b-32 #Esto no deberia imprimirlo
libpng-32
libjpeg-32
prelink
ink #Esto no deberia imprimirlo
Espero su ayuda, muchisimas gracas.