Oppure

Loading
08/05/14 12:52
Marte111
Salve, sto usando i file csv per archiviare le entrate e uscite che faccio io mensilmente..
unica cosa che ho un problema e quando salvo il file e se la motivazione c'è scritto:

Biglietto da visita per gruppo di socializzazione..

in poche parole mi salva solo la prima scritta ovvero "biglietto".

come mai?

vi posto il codice Salva_nel_db i parametri dove salvo sono tutti char[256] in un file H.

e li prendo con un scanf("%s", etc). in un'altro file .c

ecco:
void salva_nel_db(char *data, char *motivazione, char *tipo, char * importo)
{
	char nomefile[]="database.csv";
	FILE * Fp1;
	
	Fp1 = fopen(nomefile, "a");
	if (Fp1==NULL){
		printf("File %s not found\n", nomefile);
		exit(-1); 
	}
	fprintf(Fp1, "%s;%s;%s;%s\n", data, motivazione, tipo , importo);
	
	rewind(Fp1);
	
	fflush(Fp1);
	fclose(Fp1);
	
	printf("\n Salvato..\n");
	Pause();
}


idee?

grazie mille e buona giornata.
Ultima modifica effettuata da Marte111 08/05/14 12:54
aaa
08/05/14 13:46
nessuno
Come fai l'input della stringa?

Non puoi usare la scanf ma dovrai usare la fgets con input da stdin
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/05/14 14:10
Marte111
guarda, io uso questo codice:

void input_inserimento()
{
		printf("Inserire data: "); 
		scanf("%s",data);
		fflush(stdin);
		printf("Inserire Motivazione: "); 
		scanf("%s", motivazione);
		fflush(stdin);
		printf("Inserire Entrate o Uscita:  "); 
		scanf("%s", tipo);
		fflush(stdin);
		printf("Inserire Importo:  "); 
		scanf("%s", importo);
		fflush(stdin);
}


void inserimento()
{
	char finito;
	finito='n';
	
	while((finito=='n') || (finito=='N'))
	{
		Clear();
		input_inserimento();
		salva_nel_db(data,motivazione,tipo,importo);
	
		printf("Finito? S(i) oppure N(o) --> ");
		scanf("%c", &finito);
	
	}
}


come posso usare fgets come dici tu ?
aaa
08/05/14 14:20
nessuno
La scanf non accetta una frase ma solo una parola.

Devi usare la fgets così

fgets(motivazione, 255, stdin);
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/05/14 15:01
Marte111
Postato originariamente da nessuno:



ho provato e funziona.. ma l'unico problemino e che nel file .csv mi va a capo dopo la motivazione:

1;20-01-2015;Sito Web - Realizzato
;e;200,00


come mai?
aaa
08/05/14 17:27
nessuno
Perché la fgets aggiunge un ritorno a capo alla fine della stringa. Eliminalo subito dopo aver usato la fgets.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.