PDA

Visualizza la versione completa : [C] Funzione strspn()


SeeKeD
21-11-2006, 19:44
Ciao a tutti, ho quest'altro problema...dovrei ridefinire la funzione strcspn in modo che mi restituisca la lunghezza massima del segmento iniziale della stringa str1 che contiene soltanto i caratteri inclusi nella stringa str2, la mia difficoltà sta nell'elaborare l'algoritmo che mi permetta questo confronto e che mi restituisce il numero finale di caratteri...per il momento sto procedendo in questo modo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *_strcspn_(const char *, const char *);

main() {

char *str1;
str1=(char *) malloc(100 * sizeof(char));
char *str2;
str2=(char *) malloc(100 * sizeof(char));
int n;

scanf("%s", str1);
scanf("%s", str2);

printf("%d", _strcspn_(s1, s2));

char *_strcspn_(const char *s1, const char *s2);

...algoritmo ?!?!?!?


io pensavo di creare 2 cicli for in modo da confrontare il primo carattere di str1 con tutti gli altri di str2, se ce ne sono continuare successivamente con il secondo carattere str1 e confrontarlo con i caratteri di str2 e cosi via, se al primo carattere di str1 non corripsonde nessun carattere di str2 restituire 0, oppure non so se esiste una soluzione logica migliore....

oregon
21-11-2006, 20:20
Ci fai qualche esempio di quello che vorresti ...?

SeeKeD
21-11-2006, 20:59
praticamente se str1 è la stringa 'albero', ed str2 è la stringa 'abcd' allora il prefisso di str1 che contiene caratteri di str2 è 'ab' ed ha lunghezza 2 (2 deve essere il valore che la funzione deve restituire)....

Lak3d
21-11-2006, 21:44
#include <stdio.h>

int _strcspn_(char *, char *);

int main() {

char *str1, *str2;
str1=(char *) malloc(100 * sizeof(char));
str2=(char *) malloc(100 * sizeof(char));
scanf("%s", str1);
scanf("%s", str2);


printf("%d", _strcspn_(str1, str2));

return 0;}

int _strcspn_(char *s1, char *s2){
int i,j, trovato;

for(i=0; i<strlen(s1); i++){
trovato=0;
for (j=0; j<strlen(s2); j++){
if (s1[i]==s2[j]){
trovato=1;
}
}
if (trovato!=1)
return i;
}
}

Loading