|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
[C]Aiuto per un rogramma
Salve a tutti ho un problema con il seguente programma.
Dovrebbe ricevere in input una serie di nomi e date e salvarle su un file..e lo fa..ma i nomi (che sono una matrice di caratteri) non funziona..o meglio funziona ma il nome di posto 0 non vuole farmelo inserire Qualcuno mi aiuti perchè sto impazzendo e non riesco a capire che cavolo sia Codice:
/******************************
** Creare un'agenda in C **
*******************************/
#include <stdio.h>
#include <string.h>
void inserimento(); //prototipo delle
void visualizzazione(); //funzioni
FILE *save;
int main(void)
{
int risp;
char risp2;
system("/bin/sh -c clear");
save=fopen("save.txt","w+"); //creo il file save.txt
printf("Benvenuti in AGENDA V 0.1");
do
{
printf("\n[1]-Per inserire i nomi nel file");
printf("\n[2]-Per visualizzare il contenuto del file");
scanf("%d",&risp);
switch(risp)
{
case 1:{inserimento();}break;
case 2:{visualizzazione();}break;
}
//getchar();
printf("\nAncora? ");
scanf("%s",&risp2);
}while(risp2=='s');
}
//Funzione per l'inserimento
void inserimento()
{
const int righe=5,lettere=20;
char nome[righe][lettere];
char date[righe][lettere];
int nomi,i;
do
{
printf("\nQuanti nomi vuoi inserire?");
scanf("%d",&nomi);
}while(nomi>4);
for(i=0;i<nomi;i++)
{
printf("\nInserire il nome di posto %d",i); //il nome di posto 0 non me lo fa inserire
fgets(nome[i],lettere,stdin);
fputs(" ",save);
fputs(nome[i],save);
}
for(i=0;i<nomi;i++)
{
printf("\nInserire la data di nascita di %s",nome[i]);
fgets(date[i],lettere,stdin);
fputs(date[i],save);
fputs("\n",save);
}
}
//Funzione per la visualizzazione
void visualizzazione()
{
fclose(save);
while(!feof(save))
{
char str[255];
fgets(str,255,save);
printf("%s",str);
}
}
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX Ultima modifica di -Yara- : 28-01-2005 alle 17:38. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
scusa ma se mi chiudi il puntatore al file nella visualizzazione
![]() come fai a vedere se sei arrivato alla fine. Allora lo devi riaprire in modalità lettura. Non l'ho testato ma è solo una prima occhiata. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
In effetti..grazie per la segnalazione ma cmq non funziona lo stesso..non riesco a capire cosa sia! Se lo compilo col borland funziona!
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
|
al posto di fclose(save) in visualizzazione forse dovresti mettere un rewind(save).
Inoltre passando a fopen "w+" distruggi il contenuto ogni volta, se vuoi preservare i nomi gia' salvati dovresti usare "a+". Per quanto riguarda il motivo per cui avevi postato, invece, non so aiutarti....con il gcc zompa lo 0 e fa inserire il nome di posto 1 direttamente...bo con scanf funziona pero' |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
Quote:
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
cmq se chiude e riapre il flusso in r come deve fare rewind è inutile.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
|
perche' chiudere e riaprire il flusso? puo' tranquillamente riposizionarsi all'inizio con rewind e leggere i nomi.....chiudere e aprire in lettura sarebbe un esercizio per applicare la buona usanza del "minimo privilegio" pero'
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
Cmq non so vediamo che dicono anche gli altri. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
|
cosa centra linux? con principio del minimo privilegio intendo la buona abitudine di dare a ogni parte di un programma, a ogni funzione, i privilegi essenziali per fare quello per cui è stata scritta, per esempio dichiarare prototipi di funzioni che devono esclusivamete usare in lettura puntatori o vettori cosi':
funzione(const int *) in modo tale da non permettere per sbaglio a "funzione" di modificare i valori passatogni percio' alla funzione visualizza() e' "inutile" passare uno stream aperto anche in scrittura... sono daccordo con te sul fatto che si migliora la leggibilità del programma (e si evitano anche molti errori aggiungo), ma non e' strettamente necessario ai fini della funzionalità, mentre tu in un tuo precedente post avevi scritto "cmq se chiude e riapre il flusso in r come deve fare rewind è inutile" |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
ok per la prima parte ok avevo capito male ... dichiarare le funzioni come hai detto sono perfettamente d'accordo.
Secondo me è meglio una volta finito di scrivere chiudere sempre il file e poi quando c'è bisogno riaprirlo. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:37.




















