Newsgroup: it.comp.lang.c
Titolo: Salvare su file il risultato...

Salve, se ho un programma come questo:
#include<stdio.h>
int main()
{
 int valore, scelta;
 for(;;)
 {
  printf("\n\t0 per uscire\n");
  printf("\t1 converte DEC/HEX\n");
  printf("\t2 converte HEX/DEC\n");
  scanf("%d", &scelta);
  if (scelta==0) break;
  if (scelta==1)
  {
   printf("\tInserisci un numero in base 10\n");
   scanf("%d", &valore);
   printf("\tIn esadecimale: \n");
   printf("\t%x\n", valore);
  } /* if scela=1 */
  if (scelta==2)
  {
   printf("\tInserisci numero in base 16\n");
   scanf("%x", &valore);
   printf("\tIn base 10: \n");
   printf("\t%d\n", valore);
  }
 } /* for */
return 0;
}
che converte da decimale a esadecimale e viceversa come potrei salvare
il risultato su un file? magari dechex.dat e hexdec.dat
Ho visto che esiste la seguente funzione:
FILE *fopen(const char *nome_file, const char *modalità);
ma come la uso? tra le modalità mi servirebbe, credo, r+, comunque
AIUTO!! :) dove metto la riga?
grazie mille!
Grazie!

 AIUTO!! :) dove metto la riga?
Invece di usare i file, potresti usare la redirezione ovvero quando esegui
il programma invece di scrivere solo il nome dell'eseguibile scrivi cosi:
(converti.exe e' il nome dell'eseguibile)
converti > output.dat
Se proprio vuoi usare i file, devi dichiarare due puntatori alla struttura
FILE cosi:
FILE *fp1, *fp2; /* fp1 e fp2 sono variabili, puoi scrivere quello che vuoi
*/
poi devi aprire i file:
fp1=fopen("output.dat","w"); /* w significa write, cioe' apri il file in
scrittura */
La stessa cosa fai per fp2, magari apri uno o l'altro a seconda della scelta
dell'utente. Per scrivere sul file puoi usare la fprintf cosi:
fprintf(FILE *, char *);
oppure la fputs:
fputs(char *, FILE *);
Non ti dimenticare, alla fine, di chiudere i file!
fclose(FILE *);
--
---------------------------------------------------
There are 10 kinds of people in the world:
those who understand binary, and those who don't
---------------------------------------------------

 wrote:
Ciao! ho messo ciň che mi hai detto nel programma nel seguente modo:
#include<stdio.h>
int main()
{
 int valore, scelta;
 FILE *fp1, *fp2;
 
 for(;;)
 {
  printf("\n\t0 per uscire\n");
  printf("\t1 converte DEC/HEX\n");
  printf("\t2 converte HEX/DEC\n");
  scanf("%d", &scelta);
  if (scelta==0) break;
  if (scelta==1)
  {
   printf("\tInserisci un numero in base 10\n");
   scanf("%d", &valore);
   printf("\tIn esadecimale: \n");
   printf("\t%x\n", valore);
   fp1=fopen("output.dat","w");
   fprintf("FILE *, char *);
   fclose(FILE *);   
  } /* if scela=1 */
  if (scelta==2)
  {
   printf("\tInserisci numero in base 16\n");
   scanf("%x", &valore);
   printf("\tIn base 10: \n");
   printf("\t%d\n", valore);
   fp2=fopen("output.dat","w");
   fprintf("FILE *, char *);
   fclose(FILE *);
}
 } /* for */
return 0;
}
sicuramente sbaglio qualcosa :( ancora aiuto grazie!


>fprintf(FILE *, char *);
significa che devi usare questo prototipo, non incollare mettere il
prototipo nel file!
la printf("Ciao") che prima stampava a video deve diventare:
fprintf(fp1,"Ciao");
ora stampa ciao su fp1 in pratica nel file che hai aperto.
Stessa cosa per il fclose..... fclose(fp1) non fclose(FILE *). Se hai piu'
di un file aperto, cosa credi che ti chiuda fclose(FILE *), quale dei due,
cosa fa spara a caso?!? Ovvio che devi specificare!
Insomma mi sa che devi riscrivere il programma e quando hai fatto ....
allora riposta ....
Credo pero' che chiunque abbia letto un qualsiasi capitolo sulle funzioni C,
non scriverebbe mai nulla tipo fclose(FILE *)!
Ragazzi, ma studiate?!?
Tommy

Ragazzi, ma studiate?!?
Sě, tutto risolto! ora funziona alla grande!

> Ragazzi, ma studiate?!?
Io mi sto rompendo le chiappette con il Kelley & Pohl, a furia di stare
sempre seduto su questa sedia! Porca putt...
