PDA

View Full Version : Aggiungere CR ad un file...


dani&l
27-02-2002, 11:02
Sapete se esiste un comando o un programma in windows o Unix che mi permette di aggiungere ogni tot caratteri di un file il CR, in modo da visualizzarlo con un normale editor.

In pratica ho un file contenente le informazioni di una tabella di un database solamente il programma che mi crea questo file non aggiunge un CR a fine record e io mi ritrovo una stringa unica con tutti i record. Invece dovrei mettere poniamo ogni 80 caratteri il CR.

Help!

dani&l
27-02-2002, 16:26
Neppure un comando in UNIX ??? eppure l'ho visto fare ....

misterx
27-02-2002, 19:31
se vuoi ti scrivo domani un programmeto x windows che lo fa....

cionci
28-02-2002, 07:39
In C...

#include <stdio.h>
#include <file.h>

#define ACAPO 80

int main(int argc, char *argv[])
{
FILE *f, *f2;
int num;
char buffer[ACAPO+1];
if(argc < 3)
{
printf("Usage : AddCR srcFile destFile\n");
return 1;
}
f = fopen(argv[1], "rt");
f2 = fopen(argv[2], "wt");
if(!f)
{
printf("Error openining source file\n");
return 1;
}
if(!f2)
{
printf("Error openining destinantion file\n");
return 1;
}

do {
num = fread(buffer, 1, ACAPO, f);
buffer[num] = "\n";
fwrite(buffer, 1, num+1, f2);
} while (num == ACAPO && !feof(f));

fclose(f);
fclose(f2);
return 0;
}

cionci
28-02-2002, 07:49
Attento che se lo compili sotto Unix e lo applichi al file, se lo riapri sotto Windows vedrai sempre tutto su una unica linea (Unix associa a /n solo il carattere ASCII 0x0A, mentre DOS/Windows associa a /n i caratteri 0x0A e 0x0D, cioè vuole anche un ritorno carrello per andare a capo)...
Se fosse solo il problema del ritorno carrello basta aprire il file con EDIT e poi salvarlo...e dopo lo potrai vedere bene anche con altri editor...

Ah, ovviamente se vuoi modificare il numero di caratteri dopo cui mandare a capo devi modificare il valore della costante ACAPO nel sorgente...

misterx
28-02-2002, 19:06
Originariamente inviato da cionci
[B]Attento che se lo compili sotto Unix e lo applichi al file, se lo riapri sotto Windows vedrai sempre tutto su una unica linea (Unix associa a /n solo il carattere ASCII 0x0A, mentre DOS/Windows associa a /n i caratteri 0x0A e 0x0D, cioè vuole anche un ritorno carrello per andare a capo)...
Se fosse solo il problema del ritorno carrello basta aprire il file con EDIT e poi salvarlo...e dopo lo potrai vedere bene anche con altri editor...

Ah, ovviamente se vuoi modificare il numero di caratteri dopo cui mandare a capo devi modificare il valore della costante ACAPO nel sorgente...


eh eh eh,:o come il buon vecchio Amiga;)

cionci
01-03-2002, 00:08
Ah...ovviamente tutto non provato e scritto da zero...
A voi l'eventuale debug ;)

dani&l
06-03-2002, 08:20
Grazie Cionci, ma io cercavo qualcosa di già esistente... eventualmente proverò il programmetto...

cionci
06-03-2002, 10:36
Originariamente inviato da dani&l
[B]Grazie Cionci, ma io cercavo qualcosa di già esistente... eventualmente proverò il programmetto...
Vabbè...come ti pare...

a2000
06-03-2002, 10:45
eh che bo' fa'.
li abituate alla pappa pronta ... :(

tra l'altro ti ha dato anche del programmetto ... ;)

cionci
06-03-2002, 10:48
Eheh...allora gli ci lascio il bug ;)

a2000
06-03-2002, 10:52
astutoooo :D

P.S.
mi ricordi quei programmi per il Totocalcio (e altri ...) con la protezione cattiva per cui sembravano funzionare correttamente ma sparavano colonne a ca++o.
(poi magari vincevi con quelle :) )

dani&l
06-03-2002, 14:21
Scusa Cionci, non volevo ossere offensivo ..... il problema è che mi qui al lavoro non ho montato il C, per cui avrei dei problemi a fare il programma, testarlo e debbuggarlo :D..... Il fatto che sono convinto che esiste una funzione simile già in Unix, ma forse mi sbaglio :(...

a2000
06-03-2002, 14:46
paura del moderatorando eh :D

dani&l
06-03-2002, 17:14
Originariamente inviato da a2000
[B]paura del moderatorando eh :D

Ma nooooo!! Cosa dici mai ........ :o


:D:D!!

cionci
06-03-2002, 18:08
Originariamente inviato da dani&l
[B]Scusa Cionci, non volevo ossere offensivo ..... il problema è che mi qui al lavoro non ho montato il C, per cui avrei dei problemi a fare il programma, testarlo e debbuggarlo :D..... Il fatto che sono convinto che esiste una funzione simile già in Unix, ma forse mi sbaglio :(...
Esistono altri programmini simili...anche se ancora non ho capito se il problema è quello del ritorno carrello oppure è una questione di formattazione dell'output...

a2000
06-03-2002, 18:39
tel chì cotto e mangiato:


Sub dani(NumCar)

Open "c:\temp\prova1.txt" For Input As #1
Open "c:\temp\prova2.txt" For Output As #2

NumCar1 = LOF(1)
For i% = 1 To Int(NumCar1 / NumCar)
a$ = Input(NumCar, #1)
Print #2, a$ & Chr$(10)
Next i%
a$ = Input(NumCar1 Mod NumCar, #1)
Print #2, a$ & Chr$(10)

Close

End Sub




prevedo di potere ridurre le istruzioni a diciamo 1/3 (da 10 a 3) ;)

dani&l
07-03-2002, 09:21
Il problema che questo file devo importarlo in excel, solo che quando lo apro lo vede come un unica stringa. Ecco la necessità di dividerlo ogni 80 caratteri (lunghezza del record).

Grazie A2000 della routine.

a2000
07-03-2002, 09:27
ma schiusa, amore mio, bello di papà, ma dillo subito che ti serve in excel.
allora è moooolto più semplice.
se vuoi puoi mandarmi un frammento di un file di esempio e te lo dimostro OnAction :p

dani&l
07-03-2002, 13:06
Originariamente inviato da a2000
[B]ma schiusa, amore mio, bello di papà, ma dillo subito che ti serve in excel.
allora è moooolto più semplice.
se vuoi puoi mandarmi un frammento di un file di esempio e te lo dimostro OnAction :p

Ok, dimostramelo OnAction.... se vuoi pure il file dimmi dove te lo devo mandare, ma è sufficente che mi spieghi in teoria come fare ;)....

a2000
07-03-2002, 13:13
me lo devi mandare .lip cioè .zip quip come allegatop,
oppurep quip:

aa2000@inwind.it

ciaop

:p

a2000
07-03-2002, 13:44
benedetto ragazzo,
intanto guarda questo, e poi dimmi cosa desideri di più e di meglio e sarà fatto. :)

presto perchè tra un pò si chiude la lampada. :p

dani&l
07-03-2002, 15:33
Mitico, funziona ;), o meglio, funzionano :D!

Gvazie cavo, mi hai tolto un peso... :cool:

a2000
07-03-2002, 15:39
da dOve cavo, se posso osave :p

dani&l
07-03-2002, 15:40
:D:D!