Posts written by RootkitNeo

  1. .
    Vista la complessità del sorgente non so di quanto possano differire, se scritti in questo modo.
  2. .
    Ciao e benvenuto! ;)
  3. .
    Forse la sparo grossa alkz, ma non ci sarebbe anche da liberare la memoria (free(a))?
  4. .
    CODICE
    #include <stdio.h>
    #include <stdlib.h>

    int main() {
      int i;
      int lunghezza=6;
      FILE *fp;
      char *riga;
      char *MAX;
      fp = fopen("prova.txt", "r");
      while(!feof(fp)) {
        fgets(riga, lunghezza, fp);
        printf("%­s", riga);
      }
     
      fclose(fp);
    }


    a me così funziona. Dovresti però allocare la memoria o dichiarare riga come un array di N elementi.
  5. .
    In realtà esisterebbe, ma non è portabile...
    Più tardi da pc ti rispondo al tutto.
  6. .
    Sticazzi... complimenti.

    Curiosità, una configurazione così, quanto viene a costare?
  7. .
    Per leggere una riga alla volta puoi usare getline. Devi passare tre parametri: un puntatore ad un carattere (che inizializzerai a NULL) la lunghezza (size_t) ed il puntatore al FILE.
    In pratica sarà una cosa come questa:
    CODICE
    size_t lunghezza=0;
    ssize_t lettura;
    FILE * file;
    char * riga = NULL;

    while((lettura = getline(&riga, &lunghezza, file) != -1) {
     // riga contiene la riga letta da file
     // lettura contiene il numero di byte letti
    }


    Termina quando legge EOF, ovvero -1, la fine del file.
    E poi come dice lumo usare atoi per ottenere il numero (ma puoi farlo anche "a mano").
  8. .
    Eccolo qui. La AT&T la odio...
  9. .
    L'ho lanciato circa 15 volte, ma funziona ugualmente sai.. lol

    Vi allego anche l'eseguibile, provate ad eseguire direttamente il mio. Cambiate estensione in exe.
  10. .
    Anche se faccio quella sostituzione lumo funziona ugualmente.
  11. .
    Che versione hai di MinGw?

    Comunque prova ad usare il mio stesso codice.
  12. .
    MinGW gcc version 4.6.2 (GCC)
  13. .
    Certo, sicurissimo alkz. Ho copiato ed incollato qui il codice che utilizzo (l'avevo scritto di fretta per qualcuno un po' di tempo fa, ed avevo lasciato il file in giro per il pc, dimenticando di allocare memoria).

    Che sia "colpa" di Win il comportamento? Del modo in cui gestisce processi/memoria (io sono su un Win 7 a 64bit).
  14. .
    Si, sarebbe da allocare, ma di errori non ne ottengo (compilo con MinGw).

    CODICE
    Inserisci la parola: prova
    Stringa capovolta: avorp


    CODICE
    Inserisci la parola: Guglielmo
    Stringa capovolta: omleilguG
  15. .
    Con i puntatori manipoli direttamente la memoria. Punti in pratica ad una locazione, e semplicemente incrementando il puntatore ti sposti alla successiva (supponi quindi di avere un array).

    Una caratteristica dello xor è che ti permette di spostare i valori da una variabile all'altra, se li applichi in quel modo. Lo XOR restituisce 1 solo se è esattamente 1.
    CODICE
    A = 0110
    B = 0101

    A^B
    0110
           ^
    0101
    ------
    0011 (questo è A, B vale sempre 0101)

    B^A
    0101
           ^
    0011
    ------
    0110 (questo è B, A vale sempre 0011)

    A^B
    0011
           ^
    0110
    ------
    0101

    A = 0101
    B = 0110



    Per quanto riguarda il resto delle operazioni: l'assegnazione sta spostando l'indirizzo di str all'interno di str1.
    str2 punta in pratica all'ultima locazione (lunghezza di str + str-1).
    E poi avviene l'incremento ed il decremento delle variabili, così da farle puntare all'indirizzo successivo (str1) ed all'indirizzo precedente (str2).

    Provalo:
    CODICE
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>



    int main() {
     char *str, *str1, *str2;
     
     printf("Inserisci la parola: ");
     scanf("%­s", str);
     
     for(str1 = str, str2 = strlen(str)+str-1; str2>str1; ++str1, --str2) {
       *str1 ^= *str2;
       *str2 ^= *str1;
       *str1 ^= *str2;
     }
     
     printf("Stringa capovolta: %­s", str);
     
     return 0;
    }
5866 replies since 5/1/2009
.