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 ~§~
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.