El arreglo lo necesito para una función como esta:
char *obtenerInstruccion(char *operando,int x)
{
int i;
char *cadena = NULL,c[2];
cadena
= calloc(7,sizeof(char)); for(i = x;operando[i] != ',';i++)
{
}
return cadena;
}
para que en la condicion operando
!= aqui pueda ser o '\0' o la comaLo primero a recomendar (lo digo en buen plan) es darle un buen repaso a tu material de referencia porque hay (en este y otros mensajes) malas practicas:
* Inicializas la variable "cadena" a NULL pero lo primero que haces con ella es
asignarle otro valor. Eso ultimo vuelve la inicializacion inútil, hay que eliminarla.
* El delimitador de cadena '\0' se puede agregar de forma manual o bien utilizando una función de la biblioteca estándar de C, hay que cambiar el uso de calloc por malloc.
* Das por sentado que la cadena resultante siempre tendrá menos de siete caracteres, no hay problema si ello lo tienes garantizado pero de no ser así el programa puede reventar.
* En cada iteración del bucle creas una cadena
con un solo caracter mediante sprintf y después la copias con strcat. En otras palabras estas copiando caracteres y bien los copias en un bucle sin necesidad de esas dos funciones o utilizas una sola llamada a función.
El proceso de forma manual:
char *obtenerInstruccion(char *oper)
{
char *rv;
int i;
int j;
for (i = 0; oper[i] != '\0' && oper[i] != ','; i++)
;
if (i == 0)
rv = NULL;
else if ((rv
= malloc(i
+ 1)) != NULL
){ for (j = 0; j < i; j++)
rv[j] = oper[j];
rv[j] = '\0';
}
return rv;
}
Y utilizando funciones de la biblioteca estándar de C:
char *obtenerInstruccion(char *oper)
{
char *rv;
if (i == 0)
rv = NULL;
else if ((rv
= malloc(i
+ 1)) != NULL
)
return rv;
}
No es necesario pasar la dirección del array y el indice del elemento, en su lugar pasas directamente la dirección del elemento con "a + i" donde "a" es el array e "i" el indice del elemento donde inicia la búsqueda.
Un saludo