Sto provando una memorizzazione dei dati in memoria dinamica..
Dopo, oltre a questi problemi, mi ritorneranno tutti gli altri!!!
![]()
Ecco i miei non progressi....
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
struct nodo{unsigned char v; struct nodo *next;};
typedef struct nodo Nodo;
unsigned int no8=0,noc=1;
void stampa(Nodo *l,char);
Nodo *elimina(Nodo *l);
Nodo *elimina(Nodo *l){ //Non funziona!!!!
Nodo *ll,*lll;
ll=l;
do{
printf("\nnoc %d",noc);
printf("\nno8 %d",no8);
printf("\nl %d v %d",l,l->v);
ll=ll->next;
printf("\nll %d v %d",ll,ll->v); //elem 2-3-4
lll=ll->next; //elem 3-4-5
printf("\nlll %d v %d",lll,lll->v);
getch();
if ((lll->v)==8)
{no8--;
ll=lll;
noc-=2; //Errore nell'assegnamento di indirizzi!!!!
}
}while(no8>0);
l=ll;
return l;
}
void stampa_lista(Nodo *l,char ctr){
printf("\n\n%d)",ctr);
while(l!=NULL){
printf("%d ",l->v);
l=l->next;
}
}
int main(){
Nodo *p,*l;
printf("Inserisci X caratteri, Esc per teriminare\n");
p=(Nodo *)malloc(sizeof(Nodo));
do{p->v=getch();}while(((p->v)<31)&&((p->v)!=8)&&((p->v)!=13)&&((p->v)!=27));
putch(p->v);
l=p;
while(((l->v)!=27)&&((p->v)!=27)){
l->next=(Nodo *)malloc(sizeof(Nodo));
l=l->next;
do{
l->v=getch();
}while(((p->v)<31)&&((p->v)!=8)&&((p->v)!=13)&&((p->v)!=27)&&(!(((p->v)==8)&&(noc<1))));
if ((l->v)==13) putch(254);
else if((l->v)!=27) putch(l->v); else noc--;
if((l->v)==8){noc--; no8++;} else noc++;
}
l->next=NULL;
p=elimina(p);
stampa_lista(p,1);
return 0;
}