subString em C

askno

Power Member
char *subString (char *str, int inicio, int fim) {
if (fim > strlen (str) || fim < inicio)
return NULL;
char *aux = strdup (str);
int i;
for (i = inicio; i <= fim; i++) {
aux [i - inicio] = str;
printf ("%c", str);
}
aux[fim+1] = '\0'
return aux;
}

int main () {
char str[] = "O andre foi as compras";
char *aux = subString (str, 2, 6);
printf ("\n!%s!", aux);
return 1;
}
resultado
$ ./a.exe
andre
!andrere!

ele mete mais o re nao percebo o porque... se alguem puder ajudar agradecia []
 
Bem assim ja funciona.. de qualquer das maneiras nao percebo o porque do lixo qd faço com apontadores

char exemplo2[5];

void subString2 (char *str, char *str2, int inicio, int fim) {
int i;
for (i = inicio; i <= fim; i++)
str2 [i - inicio] = str;
}

int main () {
char exemplo[] = "O andre foi as compras";
subString2 (exemplo,exemplo2, 2, 6);
printf ("\n!%s!", exemplo2);
return 1;
}
 
char *subString (char *str, int inicio, int fim) {
if (fim > strlen (str) || fim < inicio)
return NULL;
char *aux = strdup (str);
int i;
for (i = inicio; i <= fim; i++) {
aux [i - inicio] = str;
printf ("%c", str);
}
aux[fim+1] = '\0'
return aux;
}

int main () {
char str[] = "O andre foi as compras";
char *aux = subString (str, 2, 6);
printf ("\n!%s!", aux);
return 1;
}
resultado
$ ./a.exe
andre
!andrere!

ele mete mais o re nao percebo o porque... se alguem puder ajudar agradecia []


Suponho que não seja isso que pretendes, mas sim o seguinte:
Código:
aux[i-inicio] = '\0';
O fim tem o comprimento da string original, logo dessa forma ficas sempre com caracteres que não queres. ;)
 
Back
Topo