Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    30

    [C] input da terminale linux

    Salve ragazzi, ho bisogno di un aiuto da chi programma su linux,
    ho sempre utilizzato windows per scrivere i miei progetti e adesso dovrei consegnare un lavoro che funzioni su linux, ci sono funzioni o librerie che dovrei evitare di utilizzare?

    Un altra domanda:
    Per velocizzare la correzione degli esercizi il mio prof ci ha imposto che il progetto funzionasse in questo modo dal terminale:
    linux-term$ max_betweeness grafo.txt 3 1
    2 4

    Ci ha lasciato il seguente template da utilizzare:
    codice:
    int main (int argc, char *argv[]) {
    	int a,b;
    	char *filename;
    
    	if(argc!=4) {
    		printf("Usage: max_betweeness <graph> <node index> <node index>\n");
    		return 1;	
    	}
    	filename = argv[1];
    	a        = atoi(argv[2]);
    	b        = atoi(argv[3]);
    
    	printf("FILENAME: %s SOURCE INDEX: %d TARGET INDEX: %d\n",filename,a,b);
    
    	return 0;
    }
    Intuendo che argv[] fossero i rispettivi argomenti della linea del terminale li ho salvati in delle variabili, adesso per eplicitare l'output utilizzo un semplice printf?
    Come posso verificare che il tutto funzioni su linux avendo windows?

    grazie per le risposte

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Immagini correttamente: argv è un array di stringhe (quindi un char **) contenente i parametri passati al programma. Di questi, il primo è il nome del programma stesso. L'altro parametro, argc, è un int che ti indica il numero di parametri passati.

    Finchè lavori seguendo lo standard ANSI, comunque, non hai problemi di compatibilità tra Unix e Windows.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    30
    Grazie mille per la risposta, quindi potrei testarne il funzionamento anche da windows?
    Come dovrei fare?
    dal prompt dei comandi cosa dovrei digitare?

    Comunque ci terrei anche a provarlo su linux, vorrei capire come eseguirlo da suo terminale, in modo da esser sicuro che funziona al 100%
    (con il fatto che non c'è un system pause per esempio, su windows non farei neanche in tempo a vedere l'output giusto?)

    Per eseguirlo mi basta lasciare l'eseguibile sul desktop e fare $nome 1 2 sul terminale?
    visto che sui pc della mia facoltà non posso praticamente fare nulla, tantomento compilare, l'eseguibile che mi da dev su windows va bene comunque?

    grazie mille e scusate l'insistenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Vyse220
    Per eseguirlo mi basta lasciare l'eseguibile sul desktop e fare $nome 1 2 sul terminale?
    visto che sui pc della mia facoltà non posso praticamente fare nulla, tantomento compilare, l'eseguibile che mi da dev su windows va bene comunque?
    No, un eseguibile per Windows non potrebbe mai funzionare su Linux dato che il compilatore produce codice macchina specifico per l'architettura e il sistema, al massimo potresti usare wine per lanciare su Linux un eseguibile Windows, ma per il caso in questione è fuori luogo; è vero poi che esistono i cross-compilers, ma si usano in casi o per esigenze particolari e a questi livelli sono ancora più fuori luogo.
    Devi compilare il codice sorgente direttamente su Linux e avviare l'eseguibile ottenuto. Comunque come diceva anche infinitejustice fino a quando rimani all'interno dello standard ISO hai la garanzia di non avere problemi di portabilità, anche se a volte i compilatori si prendono alcune "libertà".
    Poi se vuoi compilare ed eseguire su Linux magari anche per imparare e all'università non puoi farlo (stupefacente), puoi provare a installare sul tuo pc una distro in dual boot o più semplicemente una macchina virtuale o anche provare una distro live.
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    30
    ok grazie mille per le risposte, comunque ho un problema, per qualche strano motivo mi crasha e inoltre non mi apre neanche il file di cui specifico il nome in input, non riesco a capire il motivo, senza tutta quella roba funziona

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Vyse220
    ok grazie mille per le risposte, comunque ho un problema, per qualche strano motivo mi crasha e inoltre non mi apre neanche il file di cui specifico il nome in input, non riesco a capire il motivo, senza tutta quella roba funziona
    Di quale codice stiamo parlando? In quello che hai mostrato nel primo post non c'è nessuna apertura di file, e cosa sarebbe "tutta quella roba"? Un po' più di dettaglio magari
    every day above ground is a good one

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    30
    Originariamente inviato da YuYevon
    Di quale codice stiamo parlando? In quello che hai mostrato nel primo post non c'è nessuna apertura di file, e cosa sarebbe "tutta quella roba"? Un po' più di dettaglio magari
    Si scusa, hai ragione, credevo di riuscire a risolvere il problema da solo, ma è qualcosa che non riesco a spiegare.
    In pratica il programma l'ho sviluppato senza quella parte di codice in alto, scemplicemente con delle scanf e in effetti funziona, se però provo a farlo eseguire da prompt dei comandi allora mi va in crash.

    Ho messo un pò di printf a caso e mi sembra di capire che si blocchi per via di quest'istruzione:
    codice:
    (*v)[c].n = c;
    ed è assurdo, non mi da nessun problema se non lo faccio partire dal prompt

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Cosa sono v, c ed n? Qual è il codice che ti dà problemi? Come richiami precisamente il programma da riga di comando? I problemi vanno dettagliati, gli utenti del forum non possono sapere nulla di quello che tu hai fatto o scritto se non lo spieghi in dettaglio
    every day above ground is a good one

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    30
    io per eseguire l'exe dal prompt semplicemente lo trascino sul prompt e poi premo invio, ha sempre funzionato come metodo quindi non so oò

    per il resto, non ho dato dettagli perché credo che il problema sia più nella notazione visto che funziona se non eseguito dal prompt, comunque:
    v è il puntatore ad un puntatore
    *v punta al vettore
    c è un contatore
    n è un parametro che fa parte della struttura di cui è composto il vettore

    EDIT: il problema era in come aprivo il prompt, se apro normalmente, tutto funziona.
    oh beh, grazie mille comunque

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.