Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] errori

  1. #1
    marukomon
    Guest

    [C] errori

    ciao a tutti...ho copiato pari pari questo codice dal mio libro di C...controllato varie volte se ho copiato bene ma riscontro sempre degli errori quando vado a compilare
    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int encode_character(int chint val);
    int decode_character(int chint val);

    int main(int argcint *argv[])
    {
        
    FILE *fh/* handle di file */
        
    int rv=1/*valore restituito */
        
    int ch=0/* variabile per memorizzare un carattere */
        
    unsigned int ctr=0/* contatore */
        
    int val=5/* valore con cui codificare */
        
    int buffer[257]; /* buffer */

        
    if(argc!=3) {
            
    printf("\nErrore: Numero di parametri errato...\n");
            
    printf("\n\nUso: %s nome file azione"argv[0]);
            
    printf("\n\nDove:");
            
    printf("\n\tnome file = file da codificare o decodificare\n");
            
    printf("\tazione = D per decodificare, C per codificare\n");
            
    rv=-1/* imposta il valore di errore restituito */
        
    } else if((argv[2][0]=='D')||(argv[2][0]=='d')) /* per decodificare */ {
            
    fh=fopen(argv[1], "r"); /* apre file */
            
    if(fh<=0) { /* controlla errori */
                
    printf("\n\nErrore apertura file..\n");
                
    rv=-2/* imposta il valore di errore restituito */
            
    } else {
                
    ch=getch(fh); /* ottiene un carattere */
                
    while(!feof(fh)) { /* verifica se fine file */
                    
    ch=decode_character(chval);
                    
    putchar(ch); /* scrive il carattere sullo schermo */
                    
    ch=getc(fh);
                }
                
    fclose(fh);
                
    printf("\n\nFile decodificato sullo schermo\n");
            }
        } else { 
    /* assume la codifica sul file */
            
    fh=fopen(argv[1], "w");
            if(
    fh<=0) {
                
    printf("\n\nErrore creazione file...\n");
                
    rv=-/* imposta valore di errore restituito */
            
    } else {
                
    printf("\nInserire testo da codificare");
                
    printf("\nInserire una riga bianca per terminare\n\n");
                while(
    gets(buffer)!=NULL) {
                    if(
    buffer[0]==0)
                        break;
                    for(
    ctr=0ctr<strlen(buffer); ctr++) {
                        
    ch=encode_character(buffer[ctr], val);
                        
    ch=fputc(chfh); /* scrive il char sul file */
                    
    }
                }
                
    printf("\n\nFile codificato su file\n");
                
    fclose(fh);
            }
        }
        return(
    rv);
    }
    int encode_character(int chint val) {
        
    ch=ch+val;
        return(
    ch);
    }
    int decode_character(int chint val) {
        
    ch=ch-val;
        return(
    ch);

    cosa c'è che non va?

    ciao ciao

  2. #2
    che tipo di errori ti da?
    :mavieni: Luca
    http://digilander.libero.it/lpelo
    http://www.myspace.com/redpile

  3. #3
    marukomon
    Guest
    ombra.c: In function `main':
    ombra.c:25: warning: passing arg 1 of `fopen' from incompatible pointer type
    ombra.c:40: warning: passing arg 1 of `fopen' from incompatible pointer type
    ombra.c:44: parse error before `}'
    ombra.c:47: warning: passing arg 1 of `gets' from incompatible pointer type
    ombra.c:50: warning: passing arg 1 of `strlen' from incompatible pointer type

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Questo errore
    ombra.c:44: parse error before `}'
    è dovuto al fatto che prima della chiusura della parentesi } manca un simbolo di punto e virgola alla fine di questa riga
    rv=-3 /* imposta valore di errore restituito */

    Gli altri sono warning, non errori, nel caso della gets perchè le passi un array di interi (buffer) e la gets vuole una stringa. Inoltre la gets è deprecated (prova fgets).

    Idem per strlen, che ovviamente calcola la lunghezza di una stringa e non di un array di interi come gli passi tu e per la fopen, che vuole un puntatore a char come primo argomento e non un puntatore a int come gli passi tu.

    ciao.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.