Salve, ho una traccia che mi dice di inserire da tastiera un numero(tra 1 e 9), convertirlo in stringa, e inserirlo poi in una lista e stampare.
codice:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct Nodo {
char *str;
struct Nodo *link;
};
struct Nodo *Lista=0;
void Inserisci(char *);
void Stampa();
char * Converti(int );
int main(){
int num;
char *buffer;
printf("inserisci numero: ");
scanf("%d", &num);
if(num>0 && num<10){
buffer=Converti(num);
Inserisci(buffer);
Stampa();
}
else
printf("Errore");
return 0;
}
void Inserisci(char *buf){
struct Nodo *p=(struct Nodo *)malloc(sizeof(struct Nodo));
p->str=(char *)malloc((strlen(buf)+1)*sizeof(char));
strcpy(p->str, buf);
p->link=Lista;
Lista=p;
}
char *Converti(int n) {
char *buf;
if(n==1)
strcpy(buf, "Uno");
else if(n==2)
strcpy(buf, "Due");
else if(n==3)
strcpy(buf, "Tre");
else if(n==4)
strcpy(buf, "Quattro");
else if(n==5)
strcpy(buf, "Cinque");
else if(n==6)
strcpy(buf, "Sei");
else if(n==7)
strcpy(buf, "Sette");
else if(n==8)
strcpy(buf, "Otto");
else
strcpy(buf, "Nove");
return (buf);
}
void Stampa(){
struct Nodo *cur=Lista;
while(cur){
printf("\n");
printf("%s", cur->str);
cur=cur->link;
}
}
Quali sono gli errori nel codice? Perché non va