Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C/C++] migrazione programma

    Ciao a tutti, vi chiedo gentilmente se potete aiutarmi a migrare questo piccolo programma VB in C, sono alle prime armi e non riesco
    proprio a partire, grazie!



    Sub Main()

    Dim cont As Long
    Dim cont2 As Long
    Dim numpol As Long
    Dim numpolold As Long
    Dim currfrom As Long
    Dim currfromold As Long
    Dim currto As Long
    Dim currtoold As Long
    Dim validflag As Integer
    Dim validflagold As Integer

    Open "e:\ingsoft\rstr\test\file1.txt" For Input As #1
    Open "e:\ingsoft\rstr\test\file2.txt" For Output As #2

    Print #2, " chdrnum", " currfrom", " currto", " validflag", " conteggio"
    Print #2, "------------------------------------------------------------------"

    cont = 0
    cont2 = 0
    Do Until EOF(1)
    Line Input #1, stringafile
    cont = cont + 1

    If numpolold = numpol Then
    If currto = 99999999 And validflag = 1 Then
    If currfrom <> currtoold Then
    cont2 = cont2 + 1
    Print #2, numpolold, currfromold, currtoold, validflagold
    Print #2, numpol, currfrom, currto, validflag, cont2
    Print #2, "------------------------------------------------------------------"
    End If
    End If
    End If

    '
    ' old record
    '
    numpolold = numpol
    currfromold = currfrom
    currtoold = currto
    validflagold = validflag

    '
    ' new record
    '
    numpol = Mid(stringafile, 1, 8)
    currfrom = Mid(stringafile, 12, 8)
    currto = Mid(stringafile, 23, 8)
    validflag = Mid(stringafile, 34, 1)

    Loop

    Close #1
    Close #2

    End Sub

  2. #2
    apparte che non hai dichiarato stringafile ..
    quindi diviene Variant..
    se mi dici quanto lunga e' la stringa;
    e se mi rimembri cosa fa' mid te lo traduco pure..

  3. #3
    per adesso diventa :
    codice:
    void main(void){
    long cont,cont2,numpol,numpolold,currfrom,currfromold,currto,currtoold;
    int validflg,validflagold;
    char stringafile[?????];//da completare
    FILE *input,*output;
    input=fopen("e:\ingsoft\rstr\test\file1.txt","r");
    output=fopen("e:\ingsoft\rstr\test\file2.txt","w");
    fprintf(output, " chdrnum, currfrom, currto,  validflag,  conteggio\n");
    fprintf(output,"------------------------------------------------------------------\n");
    cont = 0 
    cont2 = 0 
    while(!feof(input)){
    stringafile=fgets(input);//questa devo controllarla...
    if feof(input)break;//in c feof restituisce true solo dopo aver letto a vuoto.
    cont++;
    If (((numpolold == numpol )&&(currto = 99999999))&&((validflag = 1)&&(currfrom != currtoold ))){
    cont2++;
    fprintf(output,"%lf,%lf,%lf,%lf\n%lf,%lf,%lf,%lf,%lf",numpolold, currfromold, currtoold, validflagold, numpol, currfrom, currto, validflag, cont2  );
    //old record 
    numpolold = numpol ;
    currfromold = currfrom ;
    currtoold = currto ;
    validflagold = validflag ;
    //new record 
    numpol = Mid(stringafile, 1, 8) 
    currfrom = Mid(stringafile, 12, 8) 
    currto = Mid(stringafile, 23, 8) 
    validflag = Mid(stringafile, 34, 1) 
    
    }//equivale a loop
    fclose(input);
    fclose(output);
    }//equivale a end sub
    manca la procedura mid(*char,int,int)
    e devo controllare se la fgets funziona cosi'!

  4. #4

    [C] migrazione programma

    Ciao kentaromiura,
    intanto grazie per la risposta, sei il mio salvatore, ti dico subito
    che la stringa è lunga 35 e mid significa che devo prendere una porzione della stringa, per esempio numpol = Mid(stringafile, 1, 8)
    significa:
    parti dal primo carattere della stringa e vai fino all'ottavo, questa è la porzione di stringa che compone il numpol.

    Spero di essere stato chiaro, grazie per una eventuale risposta.

    Nicola

  5. #5

    Re: [C] migrazione programma

    Originariamente inviato da nickbeds
    Ciao kentaromiura,
    intanto grazie per la risposta, sei il mio salvatore, ti dico subito
    che la stringa è lunga 35 e mid significa che devo prendere una porzione della stringa, per esempio numpol = Mid(stringafile, 1, 8)
    significa:
    parti dal primo carattere della stringa e vai fino all'ottavo, questa è la porzione di stringa che compone il numpol.

    Spero di essere stato chiaro, grazie per una eventuale risposta.

    Nicola
    credo di aver capito che il 3o parametro indica quanti caratteri leggere..

  6. #6
    kentaromiura mi aiuteresti a finire questo programma per favore?

  7. #7
    allora ho un po' di robe da dirti..
    inanzitutto bisogna controllare che il tipo long e il tipo int
    equivalgano a quello del basic..
    l' int dipende dal compilatore(mi sembra che se e' a 32 bit allora raddoppia???).

    puoi verificarlo con printf("%d,%d",sizeof(int),sizeof(long));

    poi quanti decimali vuoi scrivere nel file...
    mi serve saperlo..

    ultima cosa se stingafile contiene
    dato1,dato2,dato3
    allora esiste una funzione per leggerla
    si chiama scanf.. oppure si puo' usare read..

    ..
    ..
    senza andare ad usare mid ..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.