(java) Info da c a java

mikael2
mi serve un informazione, dovrei tradurre un codice da c in java ed è la prima volta che mi capita di fare ciò, volevo sapere se esiste qualche software che mi può aiutare in ciò oppure anche qualche guida.

Risposte
walter891
se intendi C puro (non a oggetti) devi innanzitutto capire come funziona la programmazione ad oggetti, perchè in java tutto è un oggetto

apatriarca
Esistono software che convertono tra diversi linguaggi, ma normalmente fanno un pessimo lavoro. Ogni linguaggio ha infatti le proprie funzionalità e le proprie limitazioni. Nel caso di conversione da C a Java non c'è ad esempio spesso un modo semplice per convertire una funzione che fa uso di puntatori. Anche solo qualcosa come una semplice funzione di swap è qualcosa di non immediato. In Java non esistono poi tipi unsigned per esempio. Se il tuo codice fa quindi uso di variabili intere unsigned la conversione potrebbe essere problematica. E anche quando la conversione è possibile, potrebbe non essere ottimale. Java ha infatti molte funzionalità nella sua libreria standard che in C è necessario implementare. Se poi si fanno uso di librerie esterne.. la conversione diventa praticamente impossibile.

La soluzione migliore, se possibile, è normalmente quella di far interfacciare i due programmi piuttosto che fare una conversione. Oppure implementare il nuovo codice da zero. Per quale ragione stai cercando di fare questa conversione?

mikael2
devo implementare il java prendendo in considerazione un file c che ho, devo fare ciò per studi

apatriarca
Quindi è una specie di compito? Ma quanto è lungo questo programma in C?

mikael2
ci sono un bel po di linee di codice è un unico file però ci sono dati molti dati costanti da salvare.
una cosa che non ho capito come tradurre in java è ad esempio queste dichiarazioni:
extern int (*xmlprintf)(FILE *stream, const char *format, ...);
extern void FixSetByEdge(char *, char *, int size);
extern FILE *xmlout;
extern FILE *debug;

apatriarca
Come ho già avuto modo di dirti, non sempre c'è un modo semplice per convertire del codice C in Java. Questa è una di quelle situazioni. È probabile sarebbe meglio rivedere come è organizzato il codice e forse addirittura usare qualche libreria Java che fa già quello che devi fare senza implementare nulla di tuo. Ma per convertire un codice da un linguaggio ad un altro hai normalmente bisogno di conoscere entrambi i linguaggi. Maggiore è la tua conoscenza dei due linguaggi più sarà facile fare questa conversione.

mikael2
in un metodo in c vengo utilizzati i seguenti parametri va_list ap, va_start(), va_end() ,vsprintf() come li traduco in java nel modo più sempliec possibile?

apatriarca
Immagino il metodo migliore sia quello di usare Varargs.

mikael2
grazie, ho un metodo da tradurre da c a java questo metodo apre un flusso in output, ho visto che le api di java possono snellire il codice però non ho capito come creare praticamente il nuovo metodo. sotto ho riportato il codice in c sperando in un vostro aiuto
void OpenOutput()
{
    static int fileno=0;
    char *newname=outputname;
    if (!outputname) return;
    if (xmlout!=stdout) fclose(xmlout);
    if (split)
        {
            if (fileno>99999)
                fprintf(stderr,"Warning: More than %d files.\n",99999);
            newname=(char*)malloc(strlen(outputname)+7);
            sprintf(newname,"%s%0*d",outputname,5,fileno++);
        }
    if ((xmlout=fopen(newname,"w"))==NULL)
        {
            fflush(stdout);
            fprintf(stderr,"Can't open file %s\n",newname);
            exit(EXIT_FAILURE);
        }
    if (split) free(newname);
}

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.