Questo in C dovrebbe andare:
codice:
#include<stdio.h>  // printf() scanf()
#include<string.h> // strlen()
#include<stdlib.h> // system() exit()

#define MAX 16





void unita(char numeri);
char decine(char numeri, char c);





void main(){
 
    int lenx=0, leny=0;
    char numeri[MAX], c='\0';  
	
    while(numeri){
        system("CLS");
        printf("[e] = esci\n");
        printf("Inserire il prezzo in Euro [MAX. 999.999.999.999,99]: ");
        scanf("%s",&numeri);
        if(numeri[0]=='e' || numeri[0]=='E')exit(1);
		
        for(lenx=0;lenx<16;lenx++){
            if(numeri[lenx]==',' || numeri[lenx]=='\0')break;
        }
        for(leny=0;leny<16;leny++){
            if(numeri[leny]=='\0')break;
        }
		
        leny=(leny-lenx)-1;
        printf("\n");
	    

        // MAX 9 

        if(lenx==1){
			
            if(numeri[0]=='0'){
	        printf("zero");
	    }
	    else{
	        unita(numeri[0]);
	    }
        }

        // MAX 99

        if(lenx==2){
		    
	    c=numeri[1];
            if(decine(numeri[0],c)!='1')unita(numeri[1]);
    	
        }
    
        // MAX 999

        if(lenx==3){
		    
	    if(numeri[0]!='1')unita(numeri[0]);
	    printf("cento");
		    
	    c=numeri[2];
            if(decine(numeri[1],c)!='1')unita(numeri[2]);
    	
        }

        // MAX 9.999

        if(lenx==4){
		    
	    if(numeri[0]!='1'){
                unita(numeri[0]);
	        printf("mila");
	    }
	    else{
	        printf("mille");
	    }

	    if(numeri[1]!='1' && numeri[1]!='0')unita(numeri[1]);
	    if(numeri[1]!='0')printf("cento");
    
	    c=numeri[3];
	    if(decine(numeri[2],c)!='1')unita(numeri[3]);
		
        }

        // MAX 99.999

        if(lenx==5){
		
	    c=numeri[1];
	    if(decine(numeri[0],c)!='1')unita(numeri[1]);
	    printf("mila");

            if(numeri[2]!='1' && numeri[2]!='0')unita(numeri[2]);
	    if(numeri[2]!='0')printf("cento");
    
            c=numeri[4];
	    if(decine(numeri[3],c)!='1')unita(numeri[4]);
		
        }

        // MAX 999.999

        if(lenx==6){
		    
	    if(numeri[0]!='1')unita(numeri[0]);
	    printf("cento");
		    
            c=numeri[2];
            if(decine(numeri[1],c)!='1')unita(numeri[2]);
	    printf("mila");

            if(numeri[3]!='1' && numeri[3]!='0')unita(numeri[3]);
	    if(numeri[3]!='0')printf("cento");
    
            c=numeri[5];
	    if(decine(numeri[4],c)!='1')unita(numeri[5]);
				
        }

        // MAX 9.999.999

        if(lenx==7){
   		
	    if(numeri[0]!='1'){
                unita(numeri[0]);
	        printf("milioni");
	    }
	    else{
	        printf("unmilione");
	    }

	    if(numeri[1]!='1' && numeri[1]!='0')unita(numeri[1]);
	    if(numeri[1]!='0')printf("cento");
            
	    c=numeri[3];
            if(numeri[1]=='0' && numeri[2]=='0' && numeri[3]=='1'){
	        printf("mille");
	    }
	    else{
    	        if(decine(numeri[2],c)!='1')unita(numeri[3]);
	        if(numeri[1]!='0' || numeri[2]!='0' || numeri[3]!='0')printf("mila");
            }
			
	    if(numeri[4]!='1')unita(numeri[4]);
   	    if(numeri[4]!='0')printf("cento");
		    
	    c=numeri[6];
	    if(decine(numeri[5],c)!='1')unita(numeri[6]);
		
        }

        // MAX 99.999.999

        if(lenx==8){
		    
            c=numeri[1];
	    if(decine(numeri[0],c)!='1')unita(numeri[1]);
	    printf("milioni");

	    if(numeri[2]!='1' && numeri[2]!='0')unita(numeri[2]);
	    if(numeri[2]!='0')printf("cento");
            
            c=numeri[4];
	    if(numeri[2]=='0' && numeri[3]=='0' && numeri[4]=='1'){
	        printf("mille");
	    }
	    else{
	        if(decine(numeri[3],c)!='1')unita(numeri[4]);
	        if(numeri[2]!='0' || numeri[3]!='0' || numeri[4]!='0')printf("mila");
            }
			
            if(numeri[5]!='1')unita(numeri[5]);
   	    if(numeri[5]!='0')printf("cento");
		    
            c=numeri[7];
	    if(decine(numeri[6],c)!='1')unita(numeri[7]);
		
        }

        // MAX 999.999.999

        if(lenx==9){
		    
	    if(numeri[0]!='1')unita(numeri[0]);
	    if(numeri[0]!='0')printf("cento");

            c=numeri[2];
	    if(decine(numeri[1],c)!='1')unita(numeri[2]);
	    printf("milioni");

	    if(numeri[3]!='1' && numeri[3]!='0')unita(numeri[3]);
	    if(numeri[3]!='0')printf("cento");
             
	    c=numeri[5];
	    if(numeri[3]=='0' && numeri[4]=='0' && numeri[5]=='1'){
	        printf("mille");
	    }
	    else{
    	        if(decine(numeri[4],c)!='1')unita(numeri[5]);
	        if(numeri[3]!='0' || numeri[4]!='0' || numeri[5]!='0')printf("mila");
	    }
             
            if(numeri[6]!='1')unita(numeri[6]);
   	    if(numeri[6]!='0')printf("cento");
		    
	    c=numeri[8];
	    if(decine(numeri[7],c)!='1')unita(numeri[8]);
		
        }

        // MAX 9.999.999.999

        if(lenx==10){
		    
	    if(numeri[0]!='1'){
                unita(numeri[0]);
	        printf("miliardi");
	    }
	    else{
    	        printf("unmiliardo");
	    }
			
	    if(numeri[1]!='1')unita(numeri[1]);
   	    if(numeri[1]!='0')printf("cento");

            c=numeri[3];
	    if(decine(numeri[2],c)!='1')unita(numeri[3]);
	    if(numeri[1]!='0' || numeri[2]!='0' || numeri[3]!='0')printf("milioni");

	    if(numeri[4]!='1' && numeri[4]!='0')unita(numeri[4]);
	    if(numeri[4]!='0')printf("cento");
             
            c=numeri[6];
	    if(numeri[4]=='0' && numeri[5]=='0' && numeri[6]=='1'){
	        printf("mille");
	    }
	    else{
                if(decine(numeri[5],c)!='1')unita(numeri[6]);
	        if(numeri[4]!='0' || numeri[5]!='0' || numeri[6]!='0')printf("mila");
	    }
            
	    if(numeri[7]!='1')unita(numeri[7]);
   	    if(numeri[7]!='0')printf("cento");
		    
            c=numeri[9];
	    if(decine(numeri[8],c)!='1')unita(numeri[9]);
		
        }

        // MAX 99.999.999.999

        if(lenx==11){
		    
            c=numeri[1];
            if(decine(numeri[0],c)!='1')unita(numeri[1]);
	    printf("miliardi");
						
	    if(numeri[2]!='1')unita(numeri[2]);
   	    if(numeri[2]!='0')printf("cento");

	    c=numeri[4];
	    if(decine(numeri[3],c)!='1')unita(numeri[4]);
	    if(numeri[2]!='0' || numeri[3]!='0' || numeri[4]!='0')printf("milioni");

	    if(numeri[5]!='1' && numeri[5]!='0')unita(numeri[5]);
	    if(numeri[5]!='0')printf("cento");
            
	    c=numeri[6];
	    if(numeri[5]=='0' && numeri[6]=='0' && numeri[7]=='1'){
	        printf("mille");
	    }
	    else{
    	        if(decine(numeri[6],c)!='1')unita(numeri[7]);
	        if(numeri[5]!='0' || numeri[6]!='0' || numeri[7]!='0')printf("mila");
	    }
            
	    if(numeri[8]!='1')unita(numeri[8]);
   	    if(numeri[8]!='0')printf("cento");
		    
	    c=numeri[10];
	    if(decine(numeri[9],c)!='1')unita(numeri[10]);
		
        }

        // MAX 999.999.999.999

        if(lenx==12){
		    
            if(numeri[0]!='1')unita(numeri[0]);
	    if(numeri[0]!='0')printf("cento");
			
	    c=numeri[2];
            if(decine(numeri[1],c)!='1')unita(numeri[2]);
	    printf("miliardi");
						
	    if(numeri[3]!='1')unita(numeri[3]);
	    if(numeri[3]!='0')printf("cento");

            c=numeri[5];
	    if(decine(numeri[4],c)!='1')unita(numeri[5]);
	    if(numeri[3]!='0' || numeri[4]!='0' || numeri[5]!='0')printf("milioni");

	    if(numeri[6]!='1' && numeri[6]!='0')unita(numeri[6]);
	    if(numeri[6]!='0')printf("cento");
             
            c=numeri[7];
	    if(numeri[6]=='0' && numeri[7]=='0' && numeri[8]=='1'){
	        printf("mille");
	    }
	    else{
    	        if(decine(numeri[7],c)!='1')unita(numeri[8]);
	        if(numeri[6]!='0' || numeri[7]!='0' || numeri[8]!='0')printf("mila");
	    }
            
	    if(numeri[9]!='1')unita(numeri[9]);
   	    if(numeri[9]!='0')printf("cento");
		    
            c=numeri[11];
	    if(decine(numeri[10],c)!='1')unita(numeri[11]);
		
        }



         if(leny>0)printf(" virgola ");




        // MAX 9 

        if(leny==1){
			 
            if(numeri[lenx+1]=='0'){
	        printf("zero");
            }
            else{
                unita(numeri[lenx+1]);
            }
        }

        // MAX 99

        if(leny==2){
		    
            c=numeri[1];
	    if(decine(numeri[lenx+1],c)!='1')unita(numeri[lenx+2]);
    
        }





        
        // Accetta solo stringhe numeriche (di lunghezza inferiore a 13, MAX 999.999.999.999) 
        if((lenx<13&&leny<3) && (numeri[0]=='0'||numeri[0]=='1'||numeri[0]=='2'||numeri[0]=='3'||numeri[0]=='4'||numeri[0]=='4'||numeri[0]=='5'||numeri[0]=='6'||numeri[0]=='7'||numeri[0]=='8'||numeri[0]=='9')){
		    
            printf("\n\n");
   	    system("PAUSE");			
		
        }
		
    }

}





void unita(char numeri){

    switch(numeri){
		
	case '1':
	    printf("uno");
	    break;
		
	case '2':
	    printf("due");
	    break;
		
	case '3':
	    printf("tre");
	    break;
		
	case '4':
	    printf("quattro");
	    break;
		
	case '5':
	    printf("cinque");
	    break;
		
	case '6':
	    printf("sei");
	    break;
		
	case '7':
	    printf("sette");
	    break;
		
	case '8':
	    printf("otto");
	    break;
		    
  	case '9':
            printf("nove");
	    break;

	default:
            break;
    }

}





char decine(char numeri, char c){
	
    switch(numeri){
			
        case '1':
     
	    if(c=='0'){
		printf("dieci");
	    }
	    if(c=='1'){
	        printf("undici");
	    }
	    if(c=='2'){
		printf("dodici");
	    }
            if(c=='3'){
		printf("tredici");
		
	    }
            if(c=='4'){
		printf("quattordici");
	    }
            if(c=='5'){
		printf("quindici");
	
	    }
            if(c=='6'){
		printf("sedici");
	    }
            if(c=='7'){
		printf("diciassette");
	    }
            if(c=='8'){
		printf("diciotto");
	    }
            if(c=='9'){
		printf("diciannove");
	    }
            
            return '1';
	    break;

	case '2':
	    if(c=='1' || c=='8'){
	        printf("vent");
	    }
	    else{
		printf("venti");
	    }
	    break;
		
	case '3':
	    if(c=='1' || c=='8'){
	        printf("trent");
	    }
	    else{
                printf("trenta");
	    }	
	    break;
		
	case '4':
	    if(c=='1' || c=='8'){
	        printf("quarant");
	    }
	    else{
		printf("quaranta");
	    }
	    break;
		
	case '5':
	    if(c=='1' || c=='8'){
	        printf("cinquant");
	    }
	    else{
		printf("cinquanta");
	    }
	    break;
		
	case '6':
	    if(c=='1' || c=='8'){
	        printf("sessant");
	    }
	    else{
		printf("sessanta");
	    }
	    break;
		
	case '7':
	    if(c=='1' || c=='8'){
	        printf("settant");
	    }
	    else{
		printf("settanta");
	    }
	    break;
		
	case '8':
	    if(c=='1' || c=='8'){
	        printf("ottant");
	    }
	    else{
	  	printf("ottanta");
	    }
	    break;
		    
  	case '9':
	    if(c=='1' || c=='8'){
                printf("novant");
	    }
	    else{
		printf("novanta");
	    }
	    break;

	default:
            break;
    }
    
    return '0';

}
P.S: la formattazione a tratti fa SCH***