PDA

View Full Version : [C] Compilazione ed esecuzione da terminale


-hide-
18-01-2010, 20:25
Sono in prossimità di un esame e dunque mi cimento nella visione di alcuni compiti svolti. In uno di questi si richiede di scrivere un programmino C che moltiplichi e dividi due interi presi come parametri (da terminale, ovviamente!).

Questo è il codice del main:
#include <stdio.h>
#include "moltiplica.h"
#include "dividi.h"

int main ( int argn, char* argv[]) {
printf("prodotto = %f\n", (moltiplica(atoi(argv[1]),atoi(argv[2]))));
printf("quoziente = %f\n", (dividi(atoi(argv[1]),atoi(argv[2]))));
return;
}


Ho delle domande a riguardo di queste righe:

int main ( int argn, char* argv[])
Utilizzando il programma da terminale ovviamente questa specificazione è necessaria.
Io, però, non ricordo perfettamente come si passano i parametri ad un file C o più che altro mi spiazza il primo parametro "int argn". Cosa prende quest'ultimo visto che all'interno delle funzioni passo due elementi dell'array argv.
Inoltre perché passo gli elementi dell'array argv che è un puntatore di tipo char se mi richiede due
printf("prodotto = %f\n", (moltiplica(atoi(argv[1]),atoi(argv[2]))));
printf("quoziente = %f\n", (dividi(atoi(argv[1]),atoi(argv[2]))));
Che è atoi?
Perché i prototipi delle funzioni si trovano in due file header separati dalle loro definizioni, che sono in .c (al momento mi ritrovo 4 file).

Se avete link o risorse utili al mio scopo vi prego di fornirmene.

clockover
19-01-2010, 01:00
int argn è il numero di parametri passati dal programma! Il minimo è 1 e si riferisce al programma stesso!

Per quanto riguarda atoi --> http://lmgtfy.com/?q=man+atoi

-hide-
19-01-2010, 19:11
Per quanto riguarda atoi --> http://lmgtfy.com/?q=man+atoi

Perfetto chiarito l'atoi!
Certo che non era difficile, ma in quel preciso momento mi veniva più facile lasciarlo scritto qui :D


Continuo a insistere sull'ultimo punto invece e riformulo la domanda perché, mi accorgo, non è molto chiara: mi ritrovo quattro file (due header e due sorgenti C) in cui, a due a due, vi si trovano prototipi delle funzioni moltiplica e dividi e codice delle relaive funzioni. Perché scrivere il codice in altri due file C? Correttezza stilistica, pratica o pura voglia del prof secondo voi?

clockover
19-01-2010, 23:47
La cosa è puramente didattica! Almeno così penso io! In quel modo hai visto: 1) utilizzo degli header, 2) utilizzo dei parametri, 3) funzione di libreria standard (atoi)! Anche perchè mi pare di capire che sei alle prime armi... non che io sia avanzato comunque!

-hide-
20-01-2010, 08:20
La cosa è puramente didattica! Almeno così penso io! In quel modo hai visto: 1) utilizzo degli header, 2) utilizzo dei parametri, 3) funzione di libreria standard (atoi)! Anche perchè mi pare di capire che sei alle prime armi... non che io sia avanzato comunque!

Proprio alle prime armi no, però non avevo ancora visto ed utilizzato sorgenti che specificassero l'argomento del main. Per questo mi sono ritrovato un pò spaesato. Infatti ero abituato ad inserire la definizione della funzione li dove vi era il prototipo (all'interno dello stesso file). In realtà ancora non mi capacito come faccia a prendere proprio il giusto file da collegare, deve essere un compito che svolge automaticamente perché nell'header non specifico alcun riferimento a quel file!