giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Avevi ragione, ho fatto degli errori che ho revisionato e corretto. Adesso il programma funziona perfettamente ma vorrei capire un'ultima cosa.
Il programma, se selezionata la voce inserisci, chiederà di inserire nome, cognome e scheda.
Il problema è che quando inserisco dei dati nella voce scheda, questa mi ricopia sul file.txt solo la prima voce.
Es
nome: roberto
cognome: rossi
scheda: nato a milano il 24/06/88...
Nella copiatura sul file txt mi ricopia solo la prima voce, cioè nato...come mai?
Potreste dare un'occhiata e consigliarmi come fare a copiare tutto il testo della voce scheda??...grazie anticipatamente...
Codice AnSI C:
/*****************************/
/* inclusione delle librerie */
/*****************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/******************************/
/* definizioni delle costanti */
/******************************/
#define MAX_CLIENTI 10 /* numero massimo di clienti */
typedef struct
{
char nome[10],
cognome[10],
scheda[10],
campo_nome[10],
campo_cognome[10],
campo_scheda[10000];
} Database;
typedef struct
{
Database vett_clienti[MAX_CLIENTI];
int nome_cognomeClienti;
} DatabaseClienti;
void leggi_da_file_inserimento(DatabaseClienti *dat);
void leggi_da_file(DatabaseClienti *dat);
int main()
{
char nome_cognome[10],
nome[10],
cognome[10];
int n;
DatabaseClienti database; /* variabile database di tipo struttura */
FILE *file_clienti1,
*file_clienti2,
*file_clienti3,
*file_clienti4,
*file_clienti5,
*file_clienti6,
*file_clienti7,
*file_clienti8,
*file_clienti9,
*file_clienti10;
printf("\n - MENU' DI SCELTA -\n");
printf("\n [1] Ricerca");
printf("\n [2] Inserimento\n");
printf("\n Inserire il numero presente in parentesi per selezionare: ");
scanf("%d", &n);
int leggi_interno_file;
if(n == 1)
leggi_da_file(&database);
else if(n == 2)
leggi_da_file_inserimento(&database);
return 0;
}
/* definizione della funzione per leggere da file */
void leggi_da_file_inserimento(DatabaseClienti *dat)
{
FILE *file_clienti1,
*file_clienti2,
*file_clienti3,
*file_clienti4,
*file_clienti5,
*file_clienti6,
*file_clienti7,
*file_clienti8,
*file_clienti9,
*file_clienti10;
dat->nome_cognomeClienti = 0; /* variabile di tipo puntatore a struttura inizializzata a zero */
int chiavi_lette;
char nome_cognome[10],
nome[10],
cognome[10],
scheda[10000];
file_clienti1 = fopen("cliente1.txt", "r");
file_clienti2 = fopen("cliente2.txt", "r");
file_clienti3 = fopen("cliente3.txt", "r");
file_clienti4 = fopen("cliente4.txt", "r");
file_clienti5 = fopen("cliente5.txt", "r");
file_clienti6 = fopen("cliente6.txt", "r");
file_clienti7 = fopen("cliente7.txt", "r");
if(file_clienti1 == NULL)
{
file_clienti1 = fopen("cliente1.txt", "w");
printf("\n NOME: ");
scanf("%s", nome);
printf("\n COGNOME: ");
scanf("%s", cognome);
printf("\n SCHEDA: \n");
scanf("%s", scheda);
fprintf(file_clienti1, " NOME %5s\n", nome);
fprintf(file_clienti1, " COGNOME %5s\n", cognome);
fprintf(file_clienti1, " SCHEDA:\n%s", scheda);
}
else if(file_clienti2 == NULL)
{
file_clienti2 = fopen("cliente2.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti2, "nome: %5s\n", nome);
fprintf(file_clienti2, "cognome: %5s\n", cognome);
}
else if(file_clienti3 == NULL)
{
file_clienti3 = fopen("cliente3.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti3, "nome: %5s\n", nome);
fprintf(file_clienti3, "cognome: %5s\n", cognome);
}
else if(file_clienti4 == NULL)
{
file_clienti4 = fopen("cliente4.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti4, "nome: %5s\n", nome);
fprintf(file_clienti4, "cognome: %5s\n", cognome);
}
else if(file_clienti5 == NULL)
{
file_clienti5 = fopen("cliente5.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti5, "nome: %5s\n", nome);
fprintf(file_clienti5, "cognome: %5s\n", cognome);
}
else if(file_clienti6 == NULL)
{
file_clienti6 = fopen("cliente6.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti6, "nome: %5s\n", nome);
fprintf(file_clienti6, "cognome: %5s\n", cognome);
}
else if(file_clienti7 == NULL)
{
file_clienti7 = fopen("cliente7.txt", "w");
printf("\nnome: ");
scanf("%s", nome);
printf("\ncognome: ");
scanf("%s", cognome);
fprintf(file_clienti7, "nome: %5s\n", nome);
fprintf(file_clienti7, "cognome: %5s\n", cognome);
}
else
{
printf("\n Database pieno:\n");
printf("\n Memoria insufficiente per memorizzare altri clienti!\n");
}
/* chiudi i file */
fclose(file_clienti1);
fclose(file_clienti2);
fclose(file_clienti3);
fclose(file_clienti4);
fclose(file_clienti5);
fclose(file_clienti6);
fclose(file_clienti7);
}
/* definizione della funzione per leggere da file */
void leggi_da_file(DatabaseClienti *dat)
{
FILE *file_clienti1,
*file_clienti2,
*file_clienti3,
*file_clienti4,
*file_clienti5,
*file_clienti6,
*file_clienti7;
dat->nome_cognomeClienti = 0; /* variabile di tipo puntatore a struttura inizializzata a zero */
char nome_cognome[10], modifica;
int cont, chiavi_lette, i;
file_clienti1 = fopen("cliente1.txt", "r");
file_clienti2 = fopen("cliente2.txt", "r");
file_clienti3 = fopen("cliente3.txt", "r");
file_clienti4 = fopen("cliente4.txt", "r");
file_clienti5 = fopen("cliente5.txt", "r");
file_clienti6 = fopen("cliente6.txt", "r");
file_clienti7 = fopen("cliente7.txt", "r");
printf("\n Inserire il nome/cognome da cercare: ");
scanf("%s", nome_cognome);
if(file_clienti1 != NULL){
fscanf(file_clienti1,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente1.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
/* printf("\n Vuoi modificare il documento? [Y/N]\n");
scanf("%c", &modifica);
if(modifica == 'Y' ||
modifica == 'y')
{
*/
}
else
printf("\n cliente1.txt: Nome o cognome non presente");
}
if(file_clienti2 != NULL){
fscanf(file_clienti2,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente2.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente2.txt: Nome o cognome non presente");
}
if(file_clienti3 != NULL){
fscanf(file_clienti3,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente3.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente3.txt: Nome o cognome non presente");
}
if(file_clienti4 != NULL){
fscanf(file_clienti4,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente4.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente4.txt: Nome o cognome non presente");
}
if(file_clienti5 != NULL){
fscanf(file_clienti5,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente5.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente5.txt: Nome o cognome non presente");
}
if(file_clienti6 != NULL){
fscanf(file_clienti6,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente6.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente6.txt: Nome o cognome non presente");
}
if(file_clienti7 != NULL){
fscanf(file_clienti7,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome) == 0 ||
strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
{
printf("\n cliente7.txt: Nome o cognome presente");
printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
dat->vett_clienti[dat->nome_cognomeClienti].nome,
dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
dat->vett_clienti[dat->nome_cognomeClienti].cognome);
}
else
printf("\n cliente7.txt: Nome o cognome non presente");
}
else if(file_clienti1 == NULL &&
file_clienti2 == NULL &&
file_clienti3 == NULL &&
file_clienti4 == NULL &&
file_clienti5 == NULL &&
file_clienti6 == NULL &&
file_clienti7 == NULL)
printf("\n Database vuoto\n");
fclose(file_clienti1);
fclose(file_clienti2);
fclose(file_clienti3);
fclose(file_clienti4);
fclose(file_clienti5);
fclose(file_clienti6);
fclose(file_clienti7);
}
|