Posizione stringa in un'altra stringa

di il
7 risposte

Posizione stringa in un'altra stringa

Salve, avrei bisogno del vostro aiuto. Non riesco a fare un esercizio sulle stringhe che mi chiede di scrivere una funzione che ha come parametro di input una stringa testo e come parametro di output la parola più corta contenuta nel testo e la sua posizione. Non riesco a trovare il modo di stampare la posizione della parola. Questo è quanto ho sono riusciuto a scrivere: 

int min_parola(char *testo, char *min_parola){
    int min=0;
    char *token = strtok(testo, " ");
    int len = strlen(token);

    while (token != NULL){
        if(len<min){
            min=len;
            strcpy(min_parola,token);
        }
        token= strtok(NULL," ");
    }
    printf("\nParola piu' corta: %s", min_parola);
    return min;
}

Potreste aiutarmi per favore? Grazie mille in anticpo.

7 Risposte

  • Re: Posizione stringa in un'altra stringa

    La variabile min non può partire da 0 altrimenti come fai a trovarne una più piccola?

    Poi utilizzi lo stesso nome per la funzione e la stringa min_parola

    E il puntatore min_parola arriva con lo spazio allocato o no?

  • Re: Posizione stringa in un'altra stringa

    Comunque non puoi usare strtok dato che modifica la stringa di partenza

  • Re: Posizione stringa in un'altra stringa

    A meno che non ricevi una copia della stringa originale o questa non ti interessa

  • Re: Posizione stringa in un'altra stringa

    22/01/2023 - oregon ha scritto:


    La variabile min non può partire da 0 altrimenti come fai a trovarne una più piccola?

    Poi utilizzi lo stesso nome per la funzione e la stringa min_parola

    E il puntatore min_parola arriva con lo spazio allocato o no?

    Non mi ero accorto di quest'errore, grazie. Cambio il valore iniziale di min e cambio il nome della funzione. Ma questo non risolve il mio problema, la variabile min assume il valore della lunghezza della stringa, ma non riesco a trovare la posizione.

  • Re: Posizione stringa in un'altra stringa

    22/01/2023 - Weierstrass ha scritto:


    Comunque non puoi usare strtok dato che modifica la stringa di partenza

    strtok l'ho utilizzato per trovare la parola più corta, non saprei come fare altrimenti. A me serve trovare la parola più corta e la sua pozione all'interno della stringa testo. 

  • Re: Posizione stringa in un'altra stringa

    Quando memorizzi min, salva in una variabile puntatore anche la posizione. Alla fine fai la differenza tra i puntatori.

    E guarda che non calcoli la lunghezza del token nel ciclo

  • Re: Posizione stringa in un'altra stringa

    22/01/2023 - Kimera ha scritto:


    22/01/2023 - Weierstrass ha scritto:


    Comunque non puoi usare strtok dato che modifica la stringa di partenza

    strtok l'ho utilizzato per trovare la parola più corta, non saprei come fare altrimenti. A me serve trovare la parola più corta e la sua pozione all'interno della stringa testo. 

    Allora devi copiare la stringa su un array provvisorio, come ti ha detto oregon. In alternativa scorri il puntatore e conti tu stesso i caratteri fino a quando trovi lo spazio o il terminatore zero.

Devi accedere o registrarti per scrivere nel forum
7 risposte