Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Array e stringhe in C

  1. #1

    Array e stringhe in C

    Ciao Butei, vi scrivo perchè sono dispirato...
    In questi giorni mi sono reso conto di essere veramente ignorante.
    Comunque, vado a esplicitare il mio problema.
    Devo scrivere una funzione che prenda in ingresso una stringa e la spezzi secondo il carattere '\n' e la inserisca in un array...
    Come posso fare???

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    codice:
    char str[]="this\nis\na\ntest\nof\nstring\ntokenizing";
    char *str1;
    
    // primo token
    str1 = strtok(str, "\n");
    
    while (1) {
      // successivo token
      str1 = strtok(NULL, "\n");
    
      /* check if there is nothing else to extract */
      if (str1 == NULL) {
        printf("Tokenizing complete\n");
        break;
      }
    }
    devi solo mettere i token in un array

  3. #3
    Ti ringrazio per la disponibilità...
    Avrei un pò di domande...

    1.La funzione strtok è all'interno delle librerie di default ?
    2.while (1), cosa vuole dire 1 ?
    3.NULL, perchè hai usat il NULL ?

    Porta pazienza, ma sono un programmatore in PHP e questa purtroppo è la mia prima esperienza con il C.
    Ti ringrazio molto...

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    strtok dovrebbe essere una funzione di string.h
    while (1) vuol dire sempre, 0=false altri numeri=true
    la funzione vuole la stringa nella prima chiamata, nelle successive vuole NULL

  5. #5
    Ti rompo le scatole per l'ennesiam volta.
    QUesta è la funzione che mi hai passato e dove ho fatto un pò di modifiche.

    char string[] = "From: JACOPO \r\n X-Mailer: WeB \r\n";
    char seps[] = "\r\n";
    char *token;

    printf( "%s\n\nTokens:\n", string );
    token = strtok( string, seps );

    while( token != NULL )
    {
    printf( " %s\n", token );
    token = strtok( NULL, seps );
    }

    La mia domanda è come posso fare per mettere la stringa spezzattato dentro ad un array?

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    char *s; // la stringa originale
    int numeroDiToken = 1;
    while ((s = strchr(s, '\n') != NULL)
    numeroDiToken++;
    poi crei l'array di dimensioni numeroDiToken
    se devi cercare un separatore formato da + di 1 carattere

    io scriverei una funzione a mio uso e consumo

  7. #7
    Spero che tu possa perdonarmi...
    Ma la mia testa da demente non capisce...Purtroppo dovrei andare a zappare i campi, con tutto il rispetto, sicuramente mi divertirei di più...
    Non riesco ancora a capire come riempire l'array.Se con la funzione che mi hai passato stampo token su ogni divisione, ovvero ogni volta che strtok trova il carattere \n,non c'è un modo per, oltre a stampare token, a inserirlo in un array ?

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    avrai un array
    char *dest[numeroDiToken];
    nel ciclo metti un contatore
    dest[c++] = token;

  9. #9
    Tutto OK...
    Non so veramente come ringraziarti.Te ne sono molto grato.
    Grazie.

  10. #10
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    un biglietto prepagato per cuba?

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.