MEGASITE FORUM [www.megasiteforum.tk] Trucchi, curiosità e consigli sul pc, e non solo! Download, pc help assistenza informatica aiuto computer, programmazione, calcio, basket, formula 1 e motori, divertimento, musica, tv & cinema, spazio per ragazze, notizie hi-tech e multimedia, games

Funzioni C su Linux

  • Posts
  • OFFLINE
    ReMichael
    Post: 3,322
    Gender: Male
    Admin
    GreatMegaSiter
    00 6/7/2004 11:29 PM
    Funzione per pulire la shell:

    void pulisci_schermo() {
    printf("\033c");
    printf("\033[2J");
    }


  • OFFLINE
    ReMichael
    Post: 3,323
    Gender: Male
    Admin
    GreatMegaSiter
    00 6/7/2004 11:34 PM
    Password shadow sulla shell
    # include <stdio.h>
    # include <termios.h>

    # define MAX_PASS 50

    struct termios newTerminalSettings;
    struct termios oldTerminalSettings;

    // nasconde l'echo sulla shell
    void shadow() {
    tcgetattr( fileno( stdin ) , &oldTerminalSettings );
    newTerminalSettings = oldTerminalSettings;
    newTerminalSettings.c_lflag &= ~ECHO;
    tcsetattr( fileno( stdin ) , 0 , &newTerminalSettings );
    }

    // riabilita l'echo sulla shell
    void unshadow() {
    tcsetattr( fileno( stdin ) , 0 , &oldTerminalSettings );
    }

    int main() {
    char password[MAX_PASS];
    printf("Password: ");
    shadow();
    fgets(password,MAX_PASS,stdin);
    printf("\n");
    unshadow();
    return(0);
    }
    Modificato da ReMichael 07/06/2004 23.35
  • OFFLINE
    ReMichael
    Post: 3,869
    Gender: Male
    Admin
    GreatMegaSiter
    00 12/3/2004 6:10 PM
    Genera un numero casuale
    // imposta il seme per la casualità
    srand((unsigned)time(NULL));

    // genera un numero casuale tra 1 e n (compresi)
    int caso = (rand() % n) + 1;
  • OFFLINE
    ReMichael
    Post: 3,870
    Gender: Male
    Admin
    GreatMegaSiter
    00 12/3/2004 6:18 PM
    Connessione ad un db mysql
    prima di tutto bisogna avere l'header mysql.h

    # include
    // ...

    // parametri di connessione al db
    const char *DB_NAME="...";
    const char *DB_HOST="..."; // di solito "localhost"
    const char *DB_USER="...";
    const char *DB_PASS="...";

    // variabile globale
    MYSQL mysql;

    int connect_db() {

    if (! mysql_init(&mysql)) return (-1);
    if (! mysql_real_connect(&mysql,DB_HOST,DB_USER,DB_PASS,"",0,NULL,0)) return (-1);
    if (mysql_select_db(&mysql,DB_NAME)) return (-1);
    return(0);

    }

    N.B:
    - non è detto che la libreria da includere sia in mysql/mysql.h (dipende dalla distro)
    - bisogna compilare aggiungendo l'opzione -lmysqlclient
  • OFFLINE
    ReMichael
    Post: 3,871
    Gender: Male
    Admin
    GreatMegaSiter
    00 12/3/2004 6:24 PM
    Esempio di query

    // si connette al db
    if (connect_db() == -1) {
    printf("\nerrore\n");
    return;
    }

    MYSQL_ROW row;
    MYSQL_RES *result;
    char *query = "select nome, cognome from utente";
    int i, nrows;

    if (mysql_query(&mysql)) {
    printf("\nerrore\n");
    return;
    }

    result = mysql_store_result(&mysql);
    nrows = mysql_num_rows(result);

    for (i = 0; i < nrows; i++) {
    // si posiziona sul primo campo
    mysql_field_seek(result,0);
    row = mysql_fetch_row(result);

    printf("\nUtente: %s %s",row[0],row[1]);
    }

    // libera la memoria allocata per la query
    mysql_free_result(result);

    // chiude la connessione con il db
    mysql_close(&mysql);
  • OFFLINE
    S6uRoN
    Post: 2,874
    Gender: Male
    Admin
    UltraMegaSiter
    00 12/4/2004 11:52 AM
    Ohhh... figa! [SM=x165494]
  • OFFLINE
    megasite3000
    Post: 2,118
    Gender: Male
    Admin
    MegaSiter
    00 12/7/2004 12:13 AM
    un mito! [SM=x165460] [SM=x165462]
    anche se nel primo caso x pulire la shell io avrei sfruttato il comando clear (lanciandolo con la chiamata execl)!
  • OFFLINE
    ReMichael
    Post: 3,896
    Gender: Male
    Admin
    GreatMegaSiter
    00 12/7/2004 12:37 AM
    Re:

    Scritto da: megasite3000 07/12/2004 0.13
    un mito! [SM=x165460] [SM=x165462]
    anche se nel primo caso x pulire la shell io avrei sfruttato il comando clear (lanciandolo con la chiamata execl)!



    con la mia funzione ho pensato che essendo standard C, dovrebbe pulire tutte le shell, quindi anche quella di win (anche se non ho provato)... con la chiamata di sistema win è fottuto... (magari mi sbaglio... non so)

    cmq non conoscevo execl !!!!! la tua potenza mi ha sorpreso! [SM=x165462]
  • OFFLINE
    megasite3000
    Post: 2,123
    Gender: Male
    Admin
    MegaSiter
    00 12/11/2004 8:01 PM
    Re: Re:

    Scritto da: ReMichael 07/12/2004 0.37
    con la chiamata di sistema win è fottuto...



    esattamente [SM=x165502]
  • OFFLINE
    ReMichael
    Post: 3,933
    Gender: Male
    Admin
    GreatMegaSiter
    00 12/11/2004 10:20 PM
    Re: Re: Re:

    Scritto da: megasite3000 11/12/2004 20.01


    esattamente [SM=x165502]



    [SM=x165456]