PDA

Visualizza la versione completa : [C] Stampare una lista a video


let23
04-07-2007, 15:32
salve devo sviluppare una procedura che stampi a video da una lista.
es. devo stampare AIUSPAUU
ma devo vedere a video solo le lettere A e U

struct listaTreniMerci2 {
char nome[40];
char composizione[40];
struct listaTreniMerci2 *next;
};

// PUNTATORI ALLA LISTA CONTENTE I TRENI

struct listaTreniMerci2 *treniMerci2, *composizioni;

void tipomerci(char *alfa) {
struct listaTreniMerci2 *tmp;
char merci_tmp[40];
int i;
tmp = composizioni;
while (tmp != NULL) {

for(i=0;i<40;n++)
if ((tmp->composizione[i] == 'A' || tmp->composizione[i] == 'U'))
tmp->composizione[i]='\0';
}
printf(">%s\n", tmp->composizione);

}

vorrei sapere se così il stamperò solo le lettere A e U del parametro puntato composizione
che contiene la parola AIUSPAUU, cioè se avrò su unica linea a video AUAUU o se qualcuno può spiegrami come fare grazie.

Il Pazzo
04-07-2007, 15:50
non ho capito quello che vuoi fare.... secondo che criterio vorresti stampare A e U scusa?

let23
04-07-2007, 18:54
vorrei sapere se leggendo all'interno della lista il valore puntato da tmp, il quale contenga ad esempio la stringa AIUSPAUU, applicando la mia procedura, riuscirei a stampare solo le lettere A e U del valore stesso escludendo così le altre lettere
Stampando a video solo la stringa da AIUSPAUU, considerando solo A e U come caratteri validi,
AUAUU.
grazie

shodan
04-07-2007, 19:18
Così non stampi nulla.



if ((tmp->composizione[i] == 'A' || tmp->composizione[i] == 'U'))
tmp->composizione[i]='\0';



Il primo carattere che entra nella condizione fa terminare la stringa.
Nel tuo caso AIUSPAUU diventerebbe \0IUSPAUU e la printf stamperebbe una riga vuota
IUSPAUU diventerebbe I\0SPAUU e la printf stamperebbe I
Devi usare una stringa di appoggio.



char result[40];
char *p = result;
if ((tmp->composizione[i] == 'A' || tmp->composizione[i] == 'U')) {
*p++ = tmp->composizione[i];
}
/* dopo il for */

*p = '\0';
printf(">%s\n", result );

alka
04-07-2007, 22:57
Originariamente inviato da let23
linguaggio c aiuto
Suggerisco l'uso di titoli più significativi, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Questo l'ho corretto io.

let23
05-07-2007, 08:03
grazie

Loading