Ricerca numeri e lettere stringa

di il
1 risposte

Ricerca numeri e lettere stringa

Salve ragazzi, sto riscontrando dei problemi con lo svolgimento di un esercizio. L'esercizio mi chiede di effettuare un controllo su una stringa letta da file e visualizzare in output se quest'ultima è formata da soli lettere, numeri o entrambi.

Ho cominciato ad effettuare un controllo visualizzando solo la presenza di numeri, giusto per capirne il concetto e lo svolgimento. (troverete la parte di codice interessata tra commento).

Di seguito il codice:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char s[50];
    int len=0;
    int controllo=0;
    int c;



    fp= fopen("file.txt","r");
     if (fp==NULL){
        printf("Impossibile aprire il file! \n");

    }
      else
            fgets(s,50,fp);
            printf("%s",s);

            printf("\n\n");

            while((len<50) && (s[len]!='\0'))
                len++;

             if(len<50)
                printf("La frase contiene %d caratteri\n",len);
             else
                printf("Impossibile calcolare la lunghezza della frase!\n");

        printf("\n\n");

        fgets(s,50,fp);
            printf("%s",s);

            printf("\n\n");

  // controllo numeri all'interno della stringa 
  
      for (c=0; c<50; c++){
        if((s[c]>='0') & (s[c]<='9')){

            if (controllo!=NULL){
                printf("La frase contiene dei numeri",controllo);
            }
        else
            printf("La frase non contiene numeri");
      }
      }



Vi ringrazio in anticipo!! 












}

1 Risposte

  • Re: Ricerca numeri e lettere stringa

    Ciao, vedo diversi errori tra cui:
    - richiami la fgets() due volte per ciascuna riga
    - utilizzi l'operatore bitwise & al posto di &&.
    Credo però che perchè tu ne venga fuori, da solo, sia meglio che affronti il problema per gradi:
    a) parti con la lettura riga per riga del file, ogni riga stampala a video (oppure limitati a leggere solo la prima riga)
    b) predisponi una funzione che ti stampa a video tutti i caratteri presenti in una stringa (quindi devi leggere la stringa carattere per carattere)
    c) dal ciclo di lettura fatto al punto a) richiama la funzione fatta al punto b) e verifica il risultato
    d) sulla base della funzione al punto b) scrivi una funzione che indichi se tutti i caratteri sono numerici
    e) richiama la funzione del punto d) dal ciclo di lettura
    ... e avanti così per le altre funzioni richieste.
Devi accedere o registrarti per scrivere nel forum
1 risposte