Esercizio con strtok

di il
2 risposte

Esercizio con strtok

Oggi ho iniziato a studiare la funzione strtok, l'esercizio prevede che da una stringa prendere la parola con lunghezza minima e la sua posizione. Funziona, ma non so come ottenere la posizione della parola minima
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char frase[10];
    char parolamin[10];
    printf("Inserisci la frase: ");
    scanf("%s", frase);

    char *pos;
    int min=strlen(frase);

    char *tmp;

    for(tmp=strtok(frase,"-");tmp!=NULL;tmp=strtok(NULL,"-"))
    {
        if(strlen(tmp)<min)
        {
            min=strlen(tmp);
            strcpy(parolamin,tmp);
            pos=tmp;
        }
    }

    printf("La frase e': %s", parolamin);
    printf("La posizione e': %c", pos);
    return 0;
}

2 Risposte

  • Re: Esercizio con strtok

    Non ho capito cosa intendi per posizione. Perché pos è char*?
  • Re: Esercizio con strtok

    Il puntatore pos, contiene un numero che si riferisce alla posizione in memoria della stringa più corta, non lo devi stampare con %c che restituisce il carattere corrispondente al codice ascii, ma con %d che ti restituirà la locazione di memoria.
    Per stampare la posizione nella stringa, dovrai sottrarre alla locazione di partenza della stringa più corta, la locazione di partenza della stringa totale.
    
    printf("\nLa posizione e': %d", pos-frase);
    
    i char occupano 8 bit, non hai bisogno di ulteriori calcoli, visto che anche i caratteri della stringa immessa occupano 8 bit ciascuno.
    il vettore da 10 cartteri è un po' scarso per contenere una frase e non fai nessun controllo....
Devi accedere o registrarti per scrivere nel forum
2 risposte