Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] gestire parole nelle stringhe

    ciao,
    per esercizio stavo realizzando un programma in C che salva dei record in un file in un modo particolare...
    L'esercizio vuole che si gestisca una sorta di libreria con funzioni tipo: inserisci libro, ricerca libro o titolo di un libro e così via.
    Il tutto si dovrebbe fare però usando dei comandi particolari. Ad esempio se si vuole inserire un libro si deve scrivere:

    Inserire titolo=titolo libro &autore=autore libro

    ora ho pensato di usare la funzione strstr per localizzare la stringa inserire titolo= in modo da ottenere poi un puntatore alla stringa restante cioè titolo libro &autore=autore libro.
    il problema è che però non so come estrarre anke la restante parte della stringa che mi serve cioè autore libro...

    come potrei fare ? in teoria dalla stringa principale dovrei estrarre due o più sottostringhe che si riferiscano esattamente al valore che voglio inserire... ma se uso strstr la prima volta oltre a titolo libro nella stringa compare ovviamente anke tutta la restante parte &autore=autore libro, io voglio invece che vengano separate...
    cosa posso usare per risolvere il problema ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  2. #2

    ...

    Usa strtok o strpbrk per fare ste cose.
    Vatti a vedere a che servono e in una maniera o nell'altra riesci a cavartela

    ciao !

  3. #3
    ciao,
    grazie per aver risposto...
    sapevo già dell'esistenza di quelle due funzioni... difatti sono utili nel mio caso... ma non ho capito come fare a prendere in considerazione più stringhe separate che fanno parte di un'unica stringa... è questo il problema...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  4. #4
    mmm credo di aver capito devo usare strok(s,ct) e strstr(cs,ct)
    spero in bene...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  5. #5
    mm ho un nuovo problema... ora riesco ad estrarre le stringhe, ma no riesco ad estrarle completamente, vi faccio un esempio così si capisce...
    io ho la stringa:

    ################################################## ###################

    inserire titolo= Titolo del libro &autore= autore del libro

    ################################################## ###################

    riesco al massimo ad estrarre la stringa:

    titolo= Titolo del libro &autore= autore del libro

    e con il " secondo passaggio " ad estrarre :

    &autore= autore del libro

    il problema è che io dalla stringa principale vorrei estrarre direttamente:

    < Titolo del libro > e < autore del libro >
    perchè poi mi servono per salvarli all'interno di un file...

    come posso fare ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  6. #6

    A giusto, hai ragione.

    E' vero con quello che ti ho detto non riesci ancora per il semplice motivo che non sai cos'è un terminatore di stringa NULL che è il carattere '\0'.
    Vatti a studiare cos'è senò è ovvio che non capisci come separare le stringhe .

    Ciao !

  7. #7
    so benissimo cosa è il terminatore di stringa NULL, ma non serve per arrivare a fine stringa ? e quindi serve solo per dire che la stringa è finita ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  8. #8
    Appunto, serve per dire alle funzioni che lavorano su stringhe dove termina una stringa. E se lo usi in maniera furba:

    /*per esempio se ho*/

    char str[9] = "1234-567";
    puts(str);// stampa "1234-567"

    /*se invece faccio*/

    str[4] = '\0'; // separi
    puts(str); // stampa "1234"
    puts(str + 5); // stampa "567"

    Ed ecco che hai separato 1234 da 567.

    il carattere '-' lo puoi trovare con strpbrk...

    Il tuo caso è differente ma ti puoi ricondurre con facilità.
    Penso che da qui vai anvanti da solo.

    Ciao !

  9. #9
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Non puoi usare XML per il progetto?
    ChReAn
    -------------------

    Slackware 9.1 powered

  10. #10
    Prova questo, sicuramente c'è di meglio, ma ora mi è venuto così

    codice:
      char* s = "titolo= Titolo & autore= Autore";    /*  La tua stringa */
      char* p = strdup(s);                            /*  Copiamo la stringa siccome la modifichiamo e ricordiamoci
                                                          di deallocare la memoria allocata da strdup                */
      char* s1 = strchr(p,'&');                       /*  Troviamo il carattere & e lo sostituiamo con '\0'  */
      s1[0] = '\0';
      char* titolo = strchr(p,'=')+1;                 /*  Prendiamo la stringa a partire da = fino al terminatore  */
      delete[] p;
      char* autore = strrchr(s,'=')+1;                /*  Prendiamo la stringa a partire dall'ultimo carattere =  */


    Max
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


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