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

    C - Separare stringa da stringa+numero

    codice:
    char temp[30];
    int num;
    printf("\nInserisci un nome e la sua età: "); 
    gets(temp); 
    num=atoi(temp);
    A me servono presi singolarmente il suo nome e la sua età però siccome devo chiedere tanti nomi e tante età era più carino farli chiedere e prendere insieme invece che fare:
    Inserisci il suo nome:
    Inserisci la sua età:
    perciò mettevo tutta nella stringa temp e poi con atoi prendevo la sua età(però ho notato facendo un printf dopo aver ottenuto il valore di num mi stampava zero, bohh), ma invece se volessi separare il nome dal numero? esiste qualche funzione o qualche metodo che potrei usare?
    Haters gonna hate

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se l'utente scrive

    Paolo 18

    e fai la atoi di questa stringa, ovviamente non prenderà il valore 18 ma si fermerà alla "P" di Paolo e non trovando un numero indicherà 0 come risultato.

    Devi fare in modo di trovare il punto della stringa in cui c'è lo spazio e fornire tale puntatore alla atori. Per trovare lo spazio puoi usare la funzione strchr
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ok grazie
    Haters gonna hate

  4. #4
    Ho provato ma ho qualche problema col puntatore che mi ritorna
    codice:
    stringa temp,temp2;
    int i,num;
    char *space;
               printf("\nInserisci il nome e la sua età: ");
               gets(temp);
               space=strchr(temp,32);
               printf("\nSpace: %d",space-temp+1);
               for(i=*space; i<strlen(temp); i++){
                              scanf("%c",&temp2[i]);
    
    num=atoi(temp2);
    Quando stampo la variabile space la posizione dello spazio è corretta ma quando mi entra nel for I assume un valore tipo 32 e quindi non mi entra mai nel for e num rimane ancora 0
    Haters gonna hate

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Per ottenere il valore ti basta

    printf("%d\n", atoi(space));

    a cosa ti serve il ciclo ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    E' normale che i inizi a partire dal valore 32 in quanto assegni a i il carattere puntato da space,che essendo uno spazio il suo codice ascii è 32

  7. #7
    E invece per separare il nome dall' intera stringa?
    Haters gonna hate

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dopo la atoi, memorizza un NULL al posto dello spazio.

    *space=0;
    printf("%s\n", space);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Si ma io ho bisogno di ottenere il nome separato dall' intera stringa. a cosa mi serve azzerare il puntatore?
    Haters gonna hate

  10. #10
    Ho risolto con la funzione strtok
    Haters gonna hate

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.