La funzione puts()
aggiunge una nuova riga alla stringa assegnata per scrivere su stdout
; la funzione fputs()
non lo fa.
Dato che non ci hai mostrato tutto il codice, possiamo solo ipotizzare ciò che hai fatto. Ma:
strcpy(line, "line1");
fputs(line, fOut);
putc('\n', fOut);
strcpy(line, "line2\n");
fputs(line, fOut);
produrrebbe il risultato desiderato, in due modi leggermente diversi che potrebbero essere tutti utilizzati due volte per ottenere la consistenza (e il vostro codice dovrebbe essere coerente — congedo 'elegante variante' per la scrittura della letteratura, non per la tua programmazione).
In un commento, si dice:
realtà sto scorrendo cifrare un file ogni riga e poi scrivere quella linea in un nuovo file.
Oh ragazzo! Sei codificato in base 64 per i dati crittografati? Se no, allora:
- È necessario includere
b
in modalità fopen()
(come in fOut = fopen("fileout.bin", "wb");
) perché i dati cifrati sono dati binari, non dati di testo. Questo (il b
) è sicuro sia per Unix che per Windows, ma è critico su Windows e immateriale su Unix.
- Non è necessario utilizzare
fputs()
per scrivere i dati; ci saranno zero byte ('\0'
) tra i valori crittografati e fputs()
si fermerà al primo di quelli che incontra. Probabilmente dovrai usare lo fwrite()
, indicando esattamente quanti byte scrivere ogni volta.
- Non è necessario inserire newline ovunque; i dati crittografati potrebbero contenere newline, ma questi devono essere conservati e non è possibile aggiungerne uno estraneo.
- Quando si legge di nuovo questo file, è necessario aprirlo come file binario
"rb"
e leggerlo utilizzando fread()
.
Se si codifica in base 64 per i dati crittografati, è possibile tornare a trattare l'output come testo; questo è il punto della codifica base-64.
fonte
2012-03-08 16:40:51
Solo curioso: come si fa a compilare 'line' prima di aggiungere la nuova riga? –
Definire "I get". Come stai analizzando il contenuto del file? –
@torrentialcoding In realtà sto eseguendo il looping di un file crittografando ogni riga e quindi scrivendo quella linea in un nuovo file. – Dunc