PDA

View Full Version : Aiutino x C


bodomTerror
11-01-2006, 18:42
salve, ho un problemino con un programma...in pratica nn riesco a stampare a video la lista con stringhe; riesco a metterle nella lista ma poi nn me le stampa. Se metto %s nella printf mi da errore, se metto %c mi stampa solo un carattere...se qualcuno sa come fare :help: grazie

Fenomeno85
11-01-2006, 18:49
allora:

1) posta il codice che non sono ancora capace di entrare nella tua mente :D
2) errori tipici sono non ficcare /0 cioè il terminatore di fine stringa :D


~§~ Sempre E Solo Lei ~§~

bodomTerror
11-01-2006, 19:29
Eccolo qua:

#include <stdio.h>
#include <malloc.h>
#define ELE 5

typedef struct elemento
{
int info;
struct elemento *next;
} ele;

ele *crea_lista(ele *, char);
void stampa_lista(ele *);

main()
{
int i;
char nome;
ele *inizio = NULL;

for(i=0; i<ELE; i++)
{
printf("\n\tInserire l'elemento della lista: ");
scanf("%s", &nome);
inizio = crea_lista(inizio, nome);
}

printf("\n\tLista: \n");
stampa_lista(inizio);

fflush(stdin);
getchar();
}

ele *crea_lista(ele *inizio, char nome)
{
ele *p, *aux;
p = (ele *)malloc(sizeof(ele));
p->info = nome;
p->next = NULL;

if(!inizio)
return p;
else
{
aux = inizio;
while(aux->next)
aux = aux->next;
aux->next = p;
return inizio;
}
}

void stampa_lista(ele *inizio)
{
while(inizio)
{
printf("%s ", inizio->info);
inizio = inizio->next;
}
}

Fenomeno85
11-01-2006, 19:52
non mi son messo a vedere esattamente il codice ho visto che

1) scanf ("%s", nome) -> nome è un char non è una stringa -> %c
2) scorrendo il codice non vedo /0 -> che avevo detto nel primo post? :D

edit:

ho visto il codice ... cancella il tutto e rifallo :O ... ok tutto ma te metti un char in un intero :doh: ti faccio il codice domani .. adesso non ho time.

~§~ Sempre E Solo Lei ~§~

Fenomeno85
11-01-2006, 21:17
char *string, car;
int i=0, dim = BASE;
string = (char*)malloc (BASE);
do{
scanf ("%c",&string[i]);
if (string[i]=='\n') string[i] = '\0';
i++;
if (i==dim-1){
string = (char*)realloc(string,dim*2);
dim = dim *2;
}
}while (string[i-1] != '\0');
printf ("\n\n%s",string);
return 0;


questo è il metodo per tirare su una stringa di lunghezza sconosciuta in input.

Se vuoi la lista allora cambia un attimo e puoi utilizzare parte del codice che ho visto che fatta giusta :D


~§~ Sempre E Solo Lei ~§~

bodomTerror
12-01-2006, 09:39
mmm...nn si può mettere un puntatore *stringa xckè nn lo accetta in
inizio = crea_lista(inizio, stringa); magari se puoi modificarlo tu il mio codice così vedo comè :stordita:

Fenomeno85
12-01-2006, 18:56
allora se crei la lista NON puoi usare printf ... ma devi visualizzare elemento per elemento.

guarda qui che ho messo come si fanno le liste e c'è un inserimento in coda. Non ho la forza mentale di mettermi a scrivere codice

http://www.fenomeno85.altervista.org/pag.php?pag=c1.php


~§~ Sempre E Solo Lei ~§~