Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Esistono differenze nel programmare sotto Windows e sotto Mac?

    Salve a tutti. Ho notato, non so se stranamente, che il codice che di seguito posterò, funziona regolarmente su Windows Xp con DevC++ ma non su Mac OS X con Xcode. Sapreste spiegarmi il perchè??

    codice:
    #include <stdio.h>
    main()
    {
    int c;
    int i = 0;
    while ((c=getchar()) != '$')
    {
       i++;
       fflush(stdin);
    }
    printf("%d\n", i);
    fflush(stdin);
    getchar();
    }

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Puoi postare uno screenshot dell' output?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Fino a quando ti attieni allo standard ISO non avrai problemi di portabilità tra compilatori diversi, ammesso che questi siano conformi ad esso (cosa che non sempre si verifica). Quando ti allontani dagli standard, cominci ad avere problemi: la funzione fflush() richiamata su stdin non ha un comportamento standardizzato, dipende dalle implementazioni delle librerie dei vari compilatori, è per questo che nel passaggio da un ambiente all'altro hai problemi.
    every day above ground is a good one

  4. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Ho letto un altro quesito su questo codice
    il problema secondo me è che legge anche il nuova riga \n quindi se premi tre volte un tasto
    più tre volte l'invio ti conterà sei invece di tre

    prova cosi :

    codice:
    #include <stdio.h>
    main()
    {
    char c;
    int i = 0;
    while ((c=getchar()) != '$')
    {       
        if(c!='\n') //se il tasto non è invio incrementa
                  i++;
                  
                  
                  }
    printf("%d\n", i);
    getchar();//il primo getchar legge in newline nel buffer il secondo attende l'inserimento 
    //fflush (stdin) pulisce il buffer come getchar
    getchar();
    }
    Tecnologia

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 © 2024 vBulletin Solutions, Inc. All rights reserved.