Visualizzazione dei risultati da 1 a 3 su 3

Discussione: problema funzioni

  1. #1

    problema funzioni

    ciao a tutti... avrei un problema con questo esercizio...

    /* Esercizio 6 : Scrivere una funzione che letta al suo interno una sequenza di caratteri
    terminata dall'andata a capo ne restituisca la lunghezza. */
    javascript:void(0);
    #include <stdio.h>

    int contacaratteri (char sequenza); //prototipo funzione contacaratteri

    main()

    {
    contacaratteri (char sequenza);
    printf("La sequenza di caratteri immessa è di %d caratteri",contacaratteri);

    fflush(stdin);
    getchar();
    }

    //definizione funzione contacaratteri

    int contacaratteri (char sequenza)
    {
    int cont;
    int i=0;
    printf("\nInserisci una sequenza di caratteri che termina con l'andata a capo: ");
    scanf("%s", sequenza[]);
    for (i=0; i!='\n'; i++)
    {

    }

    return cont;
    }

    oltre questo non riesco ad andare... mi da sempre errori e non so cosa sbaglio... spero proprio che qualcuno di vo riesca ad aiutarmi.. grazie in anticipo..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Innanzitutto ti diranno di specificare il linguaggio oggetto del topic nel titolo stesso e anche di postare il codice con i tag code (come da regolamento), quindi la prossima volta ricordati di farlo...

    Per il tuo problema, direi che ci sono diverse cose che non vanno... tanto per cominciare, all'interno di main() devi dichiarare la variabile sequenza visto che non lo hai fatto (pur utilizzandola), poi la chiamata alla funzione è errata per due motivi: innanzitutto perché non va specificato il tipo dell'argomento (quello lo si fa solo nel prototipo e nell'intestazione della definizione), e poi perché scrivere questo

    printf("La sequenza di caratteri immessa è di %d caratteri",contacaratteri);

    non ha alcun senso, perché stamperesti "contacaratteri" che è l'indirizzo di base della tua funzione... quello che forse intendevi fare tu è

    printf("La sequenza di caratteri immessa è di %d caratteri", contacaratteri(sequenza));

    Poi nella funzione contacaratteri ti consiglio di rivedere questa istruzione

    scanf("%s", sequenza[]);

    e inoltre il fatto che l'immissione da tastiera della stringa termini con il carattere newline ('\n') non significa che questo viene salvato nella stringa, quindi questo ciclo for

    for (i=0; i!='\n'; i++)

    teoricamente non avrebbe mai fine (secondo quello che hai pensato tu), ma in realtà è proprio sbagliato perché i è solo l'indice di scorrimento della stringa e assume valori interi (0, 1, 2...), non valori ascii...

    Insomma ti consiglio di ristudiare bene le basi del linguaggio prima di procedere, Magari perderai un po' di tempo ma consideralo un investimento per il futuro...
    every day above ground is a good one

  3. #3
    controlla la consegna dell'esercizio, a mio avviso la funzione che devi scrivere non deve leggere al suo interno l'input da tastiera ma ricevere come argomento un puntatore alla stringa. Il prototipo dovrà quindi essere

    codice:
      int my_strllen ( const char * str );
    al suo interno dovrai leggere tutti i singoli caratteri della stringa finchè non raggiungi il carattere di fine stringhe ('\0').
    Il singolo carattere i-esimo lo puoi leggere con
    codice:
      str[i];
    // cioè l'elemento i-esimo di str
    e il controllo sul carattere di terminazione lo fai con
    codice:
      str[i] == NULL;
      o
      str[i] == '\0';
    per leggere tutta la stringa puoi utilizzare un ciclo for o un while , quello che meglio conosci.

    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.