Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95

    [C] problema lettura stringa particolare

    Salve,

    Scusate, è possibile che leggendo carattere per carattere una stringa me ne vengano letti 2???
    Allora io ho questa stringa ovvero un puntatore a caratteri memorizzato in una struttura..In questa stringa ci sono caratteri alfanumerici del tipo 5N4W3E e devo sapere scomporre il numero dalla lettera che lo segue. Lo stesso per 20N40W devo leggere come numero 20 e come lettera W.
    Io ho fatto così

    for(i=0;(inizio->percorso[i])!='\0'{
    numero=0;
    while((inizio->percorso[i]!='N')&&(inizio->percorso[i]!='S')&& (inizio->percorso[i]!='W')&&(inizio->percorso[i]!='E')){

    numero=numero*10+atoi(&(inizio->percorso[i]));
    printf("atoi:%i %i\n",i,numero);
    i++;
    }//end while
    if (inizio->percorso[i]=='N'){y=y+numero;}//se vado a nord incremento y
    if (inizio->percorso[i]=='S'){y=y-numero;}//sud decremento
    if (inizio->percorso[i]=='E'){x=x+numero;}//est incremento x
    if (inizio->percorso[i]=='W'){x=x-numero;}//ovest decremento x
    i++;

    }//end for

    Perchè se digito 40 in numero mi stampa 400, nonostante inizio->percorso[i]).Ho notato che nel while mi cicla una volta in più di quello che serve.percorso[i] è un singolo carattere!

    Grazie

  2. #2

    Re: [C] problema lettura stringa particolare

    Originariamente inviato da robyp
    [...]
    Perchè se digito 40 in numero mi stampa 400, nonostante inizio->percorso[i]).Ho notato che nel while mi cicla una volta in più di quello che serve.percorso[i] è un singolo carattere!

    Grazie
    Perchè non incrementi il contatore i. Quando hai 40 il puntatore legge per primo il 4, poi fai atoi(40N50W) e ti trova 40, ma al ciclo successivo legge 0 quindi rifa atoi(0N50W) che è uguale a 0.

    Aggiungi questo while, così dovrebbe andare:
    codice:
    for(i=0;(inizio->percorso[i])!='\0'; ){ 
    numero=0; 
    while((inizio->percorso[i]!='N')&&
          (inizio->percorso[i]!='S')&& 
          (inizio->percorso[i]!='W')&&
          (inizio->percorso[i]!='E')){ 
    
    numero=numero*10+atoi(&(inizio->percorso[i])); 
    printf("atoi:%i %i\n",i,numero); 
    i++; 
    while((percorso[i]!='N')&&
          (percorso[i]!='S')&& 
          (percorso[i]!='W')&&
          (percorso[i]!='E'))i++;
    }//end while 
    if (inizio->percorso[i]=='N'){y=y+numero;}//se vado a nord incremento y 
    if (inizio->percorso[i]=='S'){y=y-numero;}//sud decremento 
    if (inizio->percorso[i]=='E'){x=x+numero;}//est incremento x 
    if (inizio->percorso[i]=='W'){x=x-numero;}//ovest decremento x 
    i++; 
    
    }//end for
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95
    Grazie ora ho capito, va

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.