Problemi con EOF

di il
8 risposte

Problemi con EOF

Buongiorno,

ho un problema con l'utilizzo di EOF all'interno dei programmi: quando utilizzo EOF come condizione per terminare il ciclo (premo quindi ctrl+d avendo windows subsystem for linux con ubuntu 18.04) accade che il ciclo comincia ad andare avanti all'infinito. Perchè accade ciò? Non riesco a capire cosa sto sbagliando e se sto sbagliando io oppure è un problema generale che dipende da qualche configurazione. Grazie.

8 Risposte

  • Re: Problemi con EOF

    Con quale codice?
  • Re: Problemi con EOF

    In linguaggio C. In generale, qualsiasi programma io scrivo dove ho un ciclo in cui inserisco per esempio una variabile intera e ho bisogno di terminare il ciclo con EOF, non riesco a farlo. A volte mi parte un ciclo infinito e non riesco a capire che cosa sbaglio. Io generalmente scrivo 'while(n != EOF)' e poi scrivo il codice all'interno, ma non riesco a terminare l'inserimento...
  • Re: Problemi con EOF

    Posta un esempio...
  • Re: Problemi con EOF

    Ad esempio questo è un programma semplice che termina se inserisco -1, tuttavia io vorrei poter utilizzare tutti i numeri.
    Se premo ctrl + d il ciclo continua il loop mentre con ctrl+c il programma termina.


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

    int main()
    {
    int n;

    printf("Inserisi un valore: ");
    scanf("%d", &n);

    while(n != EOF)
    {
    printf("Inserisi un valore: ");
    scanf("%d", &n);
    }

    return EXIT_SUCCESS;

    }
  • Re: Problemi con EOF

    Se lavori con windows devi usare Ctrl Z
  • Re: Problemi con EOF

    Ctrl z termina il programma, tipo ''forza di arresto'', ho provato anche con quello
  • Re: Problemi con EOF

    Forza di arresto???
  • Re: Problemi con EOF

    abcd ha scritto:


    Ad esempio questo è un programma semplice che termina se inserisco -1, tuttavia io vorrei poter utilizzare tutti i numeri.
    Se premo ctrl + d il ciclo continua il loop mentre con ctrl+c il programma termina.


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

    int main()
    {
    int n;

    printf("Inserisi un valore: ");
    scanf("%d", &n);

    while(n != EOF)
    {
    printf("Inserisi un valore: ");
    scanf("%d", &n);
    }

    return EXIT_SUCCESS;

    }
    
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
        long n, i;
        char buffer[100]; 
    
        while(1)
        {
            printf("Inserisci un valore: ");
            scanf("%s",  buffer);   
            n = strtol(buffer, NULL, 10);
            if(!n)
              for(i = 0; buffer[i] != '\0'; i++)
                  if(buffer[i] != '0')
                    goto end;
            printf("Hai inserito %ld\n", n);
        }
        
    end:
        return EXIT_SUCCESS;
    }
    
    
Devi accedere o registrarti per scrivere nel forum
8 risposte