Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58

    Errori su programma in Visual C++

    Ciao. Ho scritto questo programmino in C++ che dovrebbe aprire un file e crearne uno uguale, ma con delle normalizzazioni.

    Il codice è questo:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>

    void main( void )
    {
    int i,j,k;
    char riga[500];
    FILE *sigmec10, *sigmec;

    sigmec10=fopen("c:\sigmec10", "r");
    if(sigmec10==NULL )
    {printf("The file C:\sigmec10 was not opened\n" );
    }
    else
    {
    sigmec=fopen("c:\sigmec", "b");
    if(sigmec==NULL )
    { printf("The file C:\sigmec10 was not opened\n" );
    }
    else
    {
    do
    {
    fscanf(sigmec10, "%s", riga);

    if (riga[1]==' ')
    riga[1]='#';

    j=0;
    for (i=1;i<=500;i++)
    {
    if (riga[i]==NULL)
    j=j+1;
    }

    switch (riga[2])
    {
    case 'A':
    if (j==9)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'B':
    if (j==4)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'C':
    k=j+1;
    for (i = 1;i<= 345 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'D':
    if (j==8)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'E':
    k=j+1;
    for (i = 1;i<= 294 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'F':
    k=j+1;
    for (i = 1;i<= 94 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'G':
    k=j+1;
    for (i = 1;i<= 86 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    }
    fprinf(sigmec,"%s",riga);
    } while (feof(sigmec10));

    };

    };

    fclose(sigmec10);
    fclose(sigmec);

    }

    Quando lo compilo mi da questi errori:
    C(11) : warning C4129: 's' : unrecognized character escape sequence
    C(13) : warning C4129: 's' : unrecognized character escape sequence
    C(17) : warning C4129: 's' : unrecognized character escape sequence
    C(19) : warning C4129: 's' : unrecognized character escape sequence
    C(33) : warning C4047: '==' : 'int ' differs in levels of indirection from 'void *'
    C(93) : warning C4013: 'fprinf' undefined; assuming extern returning int
    Linking...
    AllineaSIGMEC10.obj : error LNK2001: unresolved external symbol _fprinf
    Debug/AllineaSIGMEC10.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    AllineaSIGMEC10.exe - 2 error(s), 6 warning(s)

    Cosa sono questi errori?
    Ge

  2. #2

    Re: Errori su programma in Visual C++

    Originariamente inviato da gege
    Ciao. Ho scritto questo programmino in C++ che dovrebbe aprire un file e crearne uno uguale, ma con delle normalizzazioni.

    Il codice è questo:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>

    void main( void )
    {
    int i,j,k;
    char riga[500];
    FILE *sigmec10, *sigmec;

    sigmec10=fopen("c:\sigmec10", "r");
    if(sigmec10==NULL )
    {printf("The file C:\sigmec10 was not opened\n" );
    }
    else
    {
    sigmec=fopen("c:\sigmec", "b");
    if(sigmec==NULL )
    { printf("The file C:\sigmec10 was not opened\n" );
    }
    else
    {
    do
    {
    fscanf(sigmec10, "%s", riga);

    if (riga[1]==' ')
    riga[1]='#';

    j=0;
    for (i=1;i<=500;i++)
    {
    if (riga[i]==NULL)
    j=j+1;
    }

    switch (riga[2])
    {
    case 'A':
    if (j==9)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'B':
    if (j==4)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'C':
    k=j+1;
    for (i = 1;i<= 345 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'D':
    if (j==8)
    {
    riga[j+1]=' ';
    riga[j+2]=' ';
    }

    case 'E':
    k=j+1;
    for (i = 1;i<= 294 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'F':
    k=j+1;
    for (i = 1;i<= 94 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    case 'G':
    k=j+1;
    for (i = 1;i<= 86 - j;i++)
    {
    riga[k]=' ';
    k=k+1;
    }

    }
    fprinf(sigmec,"%s",riga);
    } while (feof(sigmec10));

    };

    };

    fclose(sigmec10);
    fclose(sigmec);

    }

    Quando lo compilo mi da questi errori:
    C(11) : warning C4129: 's' : unrecognized character escape sequence
    C(13) : warning C4129: 's' : unrecognized character escape sequence
    C(17) : warning C4129: 's' : unrecognized character escape sequence
    C(19) : warning C4129: 's' : unrecognized character escape sequence
    C(33) : warning C4047: '==' : 'int ' differs in levels of indirection from 'void *'
    C(93) : warning C4013: 'fprinf' undefined; assuming extern returning int
    Linking...
    AllineaSIGMEC10.obj : error LNK2001: unresolved external symbol _fprinf
    Debug/AllineaSIGMEC10.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    AllineaSIGMEC10.exe - 2 error(s), 6 warning(s)

    Cosa sono questi errori?
    basta che leggi...

    1)quando posti il codice usa il tag "code"

    2)"fprinf" invece di "fprintf"

    3) sigmec10=fopen("c:\sigmec10", "r");
    non va bene , o usi:
    "c:\\sigmec10"
    oppure "c:/sigmec10"

    4)ancora prima di scrivere del codice devi leggere e capire l' output del compilatore

    ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58
    Grazie, mi sei stato di grande aiuto.
    Però non ho ancora risolto questo errore:

    C(25) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'void *'

    e me lo da sull'istruzione

    if (riga[i]!=NULL)
    j=j+1;
    Ge

  4. #4
    Originariamente inviato da gege
    Grazie, mi sei stato di grande aiuto.
    Però non ho ancora risolto questo errore:

    C(25) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'void *'

    e me lo da sull'istruzione

    if (riga[i]!=NULL)
    j=j+1;
    certo , tu hai una riga di char, non di * con cui potresti testare null.

    cmq quel pezzo non lo capisco :

    codice:
    fscanf(sigmec10, "%s", riga);
    
    if (riga[1]==' ')
    riga[1]='#';
    
    j=0;
    for (i=1;i<=500;i++)
    {
    if (riga[i]==NULL)
    j=j+1;
    }
    1) secondo me cmq e' :
    fscanf(sigmec10, "%s", &riga);

    2) se riga inizia con lo spazio vuoto sostituisci con '#' OK

    3)non capisco COSA vuoi testare con il ciclo for...
    ( forse gli spazi vuoti ? )

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58
    Vorrei leggere una riga per volta del file.
    Su questa riga controllare che il primo carattere sia ' ' (in questo caso lo sostituisco con '#').
    Poi vorrei controllare di quanti caratteri è la stringa che ho letto dal file, perchè io ho dichiarato una stringa di 500, ma non è detto che quella che ho letto sia così lunga.
    Questo mi serve perchè a seconda della lunghezza effettiva devo aggiungere degli spazi al fondo.
    Ge

  6. #6
    Originariamente inviato da gege
    Vorrei leggere una riga per volta del file.
    Su questa riga controllare che il primo carattere sia ' ' (in questo caso lo sostituisco con '#').
    Poi vorrei controllare di quanti caratteri è la stringa che ho letto dal file, perchè io ho dichiarato una stringa di 500, ma non è detto che quella che ho letto sia così lunga.
    Questo mi serve perchè a seconda della lunghezza effettiva devo aggiungere degli spazi al fondo.
    c'e' la funzione strlen(...) che restituisce come int la lunghezza della stringa.

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.