Oppure

Loading
20/02/09 16:11
theprogrammer
Postato originariamente da giocala88:

Intendi questo?

...

fgets(handle, 10000, file_clienti1);


Ma no ... ti avevo scritto

"indicando stdin come handle" ...

quindi

fgets(scheda, 10000, stdin);

Ultima modifica effettuata da theprogrammer 20/02/09 16:12
aaa
20/02/09 17:02
giocala88
scusami ancora ma a me questa funzione non va..tu xcaso hai provato??..a me non prende l'input...bah?!8-|8-|8-|...comunque grazie ancora..
aaa
20/02/09 19:17
theprogrammer
Se mi dici che "non va" non posso farci molto ...

Invece, se mostri il codice posso dirti dove sbagli ...
aaa
21/02/09 9:53
giocala88
Scusami, è vero...comunque il codice è il seguente:

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],
stringa[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";);
fgets(*stringa, 10000, stdin);

fprintf(file_clienti1, " NOME: %5s\n", nome);
fprintf(file_clienti1, " COGNOME: %5s\n", cognome);
fprintf(file_clienti1, " SCHEDA: %s\n", stringa);

}
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);

}
Dov'è il èproblema??..non legge l'input scheda. Il programma termina senza inserire l'input...grazie...8-|
aaa
21/02/09 10:23
theprogrammer
Perche' hai scritto

fgets(*stringa, 10000, stdin);

??? Ti avevo detto

fgets(stringa, 10000, stdin);

perche' il primo parametro deve essere il puntatore e stringa e' gia' il puntatore ...

P.S. Quando posti il codice, deve essere completo, ordinato e compilabile.
aaa
21/02/09 10:29
giocala88
Allora mi scusa ancora una volta, ma il programma non va uguale..:d..

/*****************************/
/* 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],
stringa[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";);
fgets(stringa, 10000, stdin);

fprintf(file_clienti1, " NOME: %5s\n", nome);
fprintf(file_clienti1, " COGNOME: %5s\n", cognome);
fprintf(file_clienti1, " SCHEDA: %s\n", stringa);

}
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);

}

PS.grazie soprattutto per la pazienza...






aaa
21/02/09 10:40
theprogrammer
E insisti con "non va" ...

NON VA NON PERMETTE DI CAPIRE IL PROBLEMA ...
aaa
21/02/09 10:42
giocala88
scusa, ma il problema l'ho già detto, non prende l'input "scheda"..è sempre questo il problema!!ma scusa compilandolo non ti sei accorto di ciò??..comunque ti ripeto quando devo prendere l'input scheda, il programma termina..sono stato chiaro????...grazie...
aaa