Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/11/2010, 14:44
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Puñeteros Punteros y Strings en C

Tenes unos cuantos errores. Yo diria bastantes. Deberias acostumbrarte a leer los mensajes de error del comilador.

Para empezar te faltaban incluir las librerias string.h y stdio.h.

La funcion procesarCadena le falta la llave de cierrre.
LA funcion strcpy pide dos punteros a char y tu funcion aux esta definida como puntero a int.
FechaI y FechaF en la funcion procesarCadena son punteros, asi que si queres modificarle el valor debes poner el asterisco que hace la desreferencia del puntero y te da el acceso a la memoria en contreto.
Los null van en mayusculas. Asi NULL.

Bueno te dejo el codigo corregido.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. void procesarCadena(char Nombre[], int* FechaI, int* FechaF, int Estados[], char cadena[])
  4. {
  5.  
  6. char aux[30];
  7. int i=0;
  8. int j=0;
  9. int h=0;
  10. while(cadena[i]!='\0'){
  11.     switch(cadena[i]){
  12.       case ';': Estados[j]=atoi(aux); j++; break;
  13.       case '[': break;
  14.       case ']': if(Nombre==NULL){
  15.                     strcpy(Nombre, aux);
  16.                     aux[0]='\0';
  17.                 }
  18.                 else if(FechaI == NULL){
  19.                      *FechaI=atoi(aux);
  20.                      aux[0]='\0';
  21.                 } else {
  22.                        *FechaF=atoi(aux);
  23.                        aux[0]='\0';
  24.                 }
  25.                 break;
  26.       case '{': break;
  27.       case '}': Estados[j]=atoi(aux); j++; aux[0]='\0'; break;
  28.       default: aux[h]=cadena[i]; h++; break;
  29.     }
  30. }
  31. }
  32. int main(int argc, char *argv[])
  33. {
  34.     char* arrayL[12];
  35.    
  36.     char TipoProceso[80];
  37.     int FechaI;
  38.     int FechaF;
  39.     int Estados[100];
  40.     procesarCadena(TipoProceso, &FechaI, &FechaF, Estados, arrayL[0]);
  41.     return 0;
  42. }

No verifique que el programa ande correctamente. Solo los errores de sintaxis.