TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Joan en 08 de Julio de 2016, 21:27:06

Título: Problema para evaluar un caracter dentro de un string
Publicado por: Joan 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;
             
      }
Título: Re:Problema para evaluar un caracter dentro de un string
Publicado por: KILLERJC 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.
Título: Re:Problema para evaluar un caracter dentro de un string
Publicado por: planeta9999 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.
Título: Re:Problema para evaluar un caracter dentro de un string
Publicado por: KILLERJC 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.
Título: Re:Problema para evaluar un caracter dentro de un string
Publicado por: RICHI777 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. }