Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502

    [C]tagliare una stringa e char* vs switch

    Il nuovo problema è questo:
    Dovrei leggere una parola da un char * tramite sscanf(s,"%s",string) la quale mi da una stringa fino al primo spazio escluso.
    Ora di questa stringa s io vorrei togliere la stringa string.
    Mi serve qualcosa di pulito visto che tutte le mie soluzioni sono un pò contorte a mio parere.
    Fra le varie smanettate ho scoperto poi che se dichiaro un char* all'interno di uno switch ho un errore di parsing, il quale si risolve solo se interno il codice in un blocco.
    Perchè?

  2. #2
    Non ho capito, lo fai un esempio?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    char *string = "ciao mamma";
    char *str = sscanf(string,"%s",str);

    or str = "ciao"

    vorrei fare in modo che string = "mamma"




    per il secondo problema

    int k = 0;
    switch(k)
    {
    case 0:
    char *string = "ciao mamma";
    char l = *string;
    ...
    ...
    break;
    ...
    ...
    }

    non funziona se non inserisco le istruzioni in un blocco

  4. #4
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    sto provando a usare la fnzione strtok, solo che fa un qualcosa di assurdo:
    tglia la stringa in token ma butta via la parte restante con il risultato che mi rimane memorizzato solo il primo token!
    eppure strtok pare che restituisce un token e la stringa originale viene privata di quel token

  5. #5
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    codice:
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	char stringa[] = "uno due tre quattro";
    	char *parola = strtok(stringa," ");
    	printf("%s --- %s",stringa,parola);
    	return (0);
    }
    mi stampa uno --- uno



  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un esempio di uso della strtok è questo

    codice:
    void main( void )
    {
      char stringa[] = "uno due tre quattro";
      char *parola;
    	
      parola = strtok( stringa, " ");
      while( parola != NULL )
      {
        printf( "%s\n", parola );
        parola = strtok( NULL, " ");
      }
    }
    Per quanto riguarda lo switch, non capisco qual e' il problema ...

    P.S. Quando fai vedere del codice utilizza i TAG opportuni, altrimenti si fa fatica a seguirlo e si rinuncia a rispondere ...

  7. #7
    Dall'esempio di oregon direi che è chiarissimo no? La strtok ti separa la parola in token mediante il separatore indicato come secondo argomento.Direi che non va bene per il tuo problema però.Ti conviene fare un pattern matching,cercare la posizione della stringa da scartare (il suo ultimo carattere + lo spazio) e poi usare una delle funzioni di copia delle stringhe (strncpy dovrebbe andare) per copiare solo la parte che ti serve su una nuova area di memoria preallocata.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Ok, credo di avere capito un pò meglio.


    Grazie

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.