I have a function C that simulate the Visual Basic mid function. This code works in HPUX but not in RHEL. For example:
main()
{
char tipo[3];
char nombre[10];
strcpy (nombre,"abcdefg");
strcpy (tipo,lds_mid(nombre,1,2));
printf ("tipo = %s\n",tipo);
}
Results:
HPUX => tipo = "ab" RHEL => tipo = (empty)
What is the problem ?
char *lds_mid (cadena,inicio,longitud)
char *cadena; unsigned inicio; unsigned longitud;
{
int start, length;
int i;
char *p;
int pidio_memoria;
start = inicio-1;
length = longitud;
if (inicio ==0) {
start = 1;
length --;
}
pidio_memoria = 0;
for (i=start;(cadena[i]!='\0') && ((i-start)<length);i++) {
if (i==start) {
p = (char *) malloc(2*sizeof(char));
pidio_memoria = -1;
if (p == NULL) {
/*printf("\nMemoria agotada\n"); */
abort();
}
}
else {
p = (char *) realloc((void *)p,(i-start+ 2)*sizeof(char));
if (p ==NULL) {
/*printf("\nMemoria agotada\n"); */
abort();
}
}
*(p+i-start)=cadena[i];
}
if (pidio_memoria) {
*(p+i-start) = '\0';
free(p);
return p;
}
else
return "";
}