Autor Tema: Problema para evaluar un caracter dentro de un string  (Leído 1300 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Joan

  • PIC10
  • *
  • Mensajes: 1
Problema para evaluar un caracter dentro de un string
« en: 08 de Julio de 2016, 21:27:06 »
Que tal amigos programadores.
Estoy teniendo un problema con un programa en el cual necesito contar un determinado numero de comillas dobles en un string. El problema es que al imprimir contador que es la variable que cuenta las comillas me da un valor de 0, quiere decir que no esta evaluando las comillas. Alguien tiene alguna idea de como solucionar este problema
Informacion adicional: Ya cale poniendolo con una variable que sea igual al valor ascii de las comillas dobles y tampoco funciono :(

Agradeceria toda la ayuda que me pudieran brindar.

Código: [Seleccionar]
if (i>89)
      {
      output_toggle(PIN_C0);
            while (p==1)
            {
               for(b=0;b<=90;b++)
               {
                z++; 
                  if(buffer1[b]=='"')
                  {
                     contador++;
                  }
                  if(contador==6)
                  {
                     //printf("%c",buffer[b]);
                     b=91;
                     p=0;
                     
                  }
                 
               }
            }
            for (c=0;c<=90;c++)
             {
                buffer2[c] = buffer1 [z];
                z++;
             }
           p=1;
             
      }

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema para evaluar un caracter dentro de un string
« Respuesta #1 en: 09 de Julio de 2016, 02:58:33 »
Voy a suponer que el array donde esta el string es "buffer"

Todo lo necesario para leerlo y contar eso deberia ser esto:


Código: C
  1. // Creo un puntero
  2. char *ptr = buffer;
  3.  
  4. while(ptr)
  5. {
  6.         if(*ptr=='"') contador++;
  7. }

Claramente en el codigo espero que realmente sea una string, es decir tenga SI o SI un caracter nulo 0x00 al final.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Problema para evaluar un caracter dentro de un string
« Respuesta #2 en: 09 de Julio de 2016, 09:23:06 »
Voy a suponer que el array donde esta el string es "buffer"

Todo lo necesario para leerlo y contar eso deberia ser esto:


Código: C
  1. // Creo un puntero
  2. char *ptr = buffer;
  3.  
  4. while(ptr)
  5. {
  6.         if(*ptr=='"') contador++;
  7. }

Claramente en el codigo espero que realmente sea una string, es decir tenga SI o SI un caracter nulo 0x00 al final.


¿ Y de esa forma el puntero se incrementa automáticamente para barrer el array ?.
Por otra parte, no creo que sea ese el problema, acceder a un array usando un puntero o en la forma buffer1[indice] debería de ser lo mismo, tu forma queda más limpia y aseada, pero el resultado debería de ser el mismo.

Más parece un problema de la forma de definir las comillas, yo le haría un debug y saldrías de dudas de inmediato, para ver el contenido inicial del array y como resoponde ese IF a la comparativa. La mayoría de dudas que se plantean sobre programas que no hacen lo que queremos se resuelve de inmediato con un Degug, no se porque la gente es tan poco dada a usarlo, a mi me resuelve el 99% de los problemas en un momento, otra cosa es no saber como hacer las cosas o errores de compilación.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema para evaluar un caracter dentro de un string
« Respuesta #3 en: 09 de Julio de 2016, 13:14:57 »
Jaja me olvide varias cosas por lo que veo.

Código: C
  1. // Creo un puntero
  2. char *ptr = buffer;
  3.  
  4. while(*ptr)
  5. {
  6.         if(*ptr==0x22) contador++;
  7.         ptr++;
  8. }

o

Código: C
  1. int CantidadComillas(char *ptr)
  2. {
  3.         int contador=0;
  4.         for(;*ptr!='\0';ptr++)
  5.         {
  6.                 if(*ptr==0x22)
  7.                 {
  8.                         contador++;
  9.                 }
  10.         }
  11.         return contador;
  12. }

Citar
La mayoría de dudas que se plantean sobre programas que no hacen lo que queremos se resuelve de inmediato con un Degug, no se porque la gente es tan poco dada a usarlo, a mi me resuelve el 99% de los problemas en un momento,

Ni siquiera eso, lo puede simular en el MPLAB (al menos en XC8), pero si coincido que un debug solucionaria todos los problemas.
« Última modificación: 09 de Julio de 2016, 13:53:29 por KILLERJC »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:Problema para evaluar un caracter dentro de un string
« Respuesta #4 en: 11 de Julio de 2016, 17:23:37 »
Código: C
  1. char *ptr = buffer;
  2. int counter = 0;
  3.  
  4. while (ptr )
  5. {
  6.    ptr = strchr( ptr, '\"' );
  7.  
  8.    if ( ptr != NULL )
  9.   {
  10.      ptr ++;
  11.      counter ++;
  12.   }
  13. }


 

anything