[PSP] problema con strcmp ( en el pc me tira )

Tengo un problema con strcmp y no se por que me falla vamos en el pc el mismo codigo sin problemas pero en la psp no se trata del siguiente codigo:

#define printf pspDebugScreenPrintf
#define bufferchar 150

char str[bufferchar],cvalor[bufferchar];
    FILE * pFile;


pFile = fopen ("selector.ini","rw+");
                 if (pFile) {
                    while (!feof (pFile)) {
                          strcpy(cvalor,fgets(str,bufferchar,pFile));
                          printf("%d",strlen(cvalor));
                          cvalor[strlen(cvalor)-1]= '\0';                         
                          printf("Valor devuelto %s",cvalor);
                          if( strcmp("[Direccion1]",cvalor) == 0 ) { printf("Ok\n"); }
                    }
                 fclose (pFile);
                 }
                 else { printf("ERROR"); }


y el archivo que lee contiene esto:
[Direccion1]
ms0:/PSP/GAME/__SCE__Concepto/EBOOT.PBP
[Direccion2]
ms0:/PSP/GAME/PSPool/EBOOT.PBP
[FIN]


Como bien se ve estaba probando la lectura de archivos y lo que quiero con eso es que cuando llegue a [Direccion1] ponga un Ok t haga un salto de line para verificar que la comparacion ha ido bien .

pues este codigo en el pc sin problemas pero en la psp me compila y todo pero no lo identifica como que son identicas las cadenas , ya que si le pongo < 1 me pone Ok y el salto de linea .

A vosotros os funciona bien el strcmp ¿? Cual es mi fallo ¿?
curioso... no sé solo por probar podrías :

a ) crea una variable cadena_aux y usa sprintf( cdenax,"[direccion1]");

b ) haz una cópia de lo recibido hasta el segundo corchete para ver si lo que pasa es que tienes algún caracter oculto o salto de línea.

para ayudarte en el problema sería mejor que nos dijeras el resultado que te da strcmp ( devuelve la distancia entre las cadenas ).

un saludo
nada he utilizado sprintf ( aunque no se que me iva a decir ) y no me imprime ninguna caracter oculto ni nada por el estilo alguien podia probar aver si a el tb le da este fallo ¿?
si me pasas el main le hecho un vistazo, aunque el sprintf no imprime... xD StringPrintf se utiliza para meter una cadena en otra la forma de usarlo debería haber sido

sprinf( cadena,"%s", "[Direccion1]");

de todas maneras lo dicho, si quieres enviame los ficheros para compilarlo y probaré a debbugearlo.

un saludo
No si el sprintf lo utilize bien xD

ok por donde te mando por mp
solucionado...

he cambiado tu código por esto :


//en una parte anterior del codigo... char cadena[128];

                 pFile = fopen ("selector.ini","rw+");
                 if (pFile) {
                    while (!feof (pFile)) {
                          fgets(str,bufferchar,pFile);
                          sprintf(cadena,"[Direccion1]");
                          str[strlen(str)-2]='\0';

                          //printf("%s\n%s\ndistancia=%d\n",str,cadena,strcmp(cadena,str)); descomenta esta línea para tener código de debug
                          if( strcmp(cadena,str) == 0 ) { printf("Ok\n"); }
                    }
                 fclose (pFile);

5 respuestas