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

    [c] convertire char in intero

    ciao raga

    ho un file di testo con scritte lettere

    devo leggere carattere per carattere e convertire ogni carattere in numero della tabella ascii

    infine scrivo su un altro file i numeri

    come si fa la conversione ? da carattere a numero ascii leggendo da file ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Beh guarda per convertire puoi o semplicemente stampare quei caratteri con i codici di formato %d o %hd anziché %c oppure se devi crerare delle vere e proprie variabili intere puoi impiegare un array di interi e convertire i caratteri più o meno così (in un ciclo iterativo finché il file non è finito)

    array[i] = (int) fgetc(pnt_file);

    dove array è appunto un array di interi e pnt_file il puntatore al file che ti interessa.

    Io direi così, poi se hai altre esigenze caso mai spiega meglio il problema

    Comunque ricorda che i caratteri sono comunque delle variabili intere, interi su 8 bit.

  3. #3

  4. #4
    ho bisogno di qualcosa che trasforma lettere in numeri

    io faccio così

    read(fd,cbyte,1);
    printf("IL BYTE LETTO è:%s\n",cbyte);
    (int *) cbyte;
    printf("ADESSO VALE:%i\n",cbyte);
    sprintf(str,"%d",cbyte);
    write(fd1,str,9);


    l'intero cbyte da sempre lo stesso numero negativo enorme

    help

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da ubuntuunixc ...
    Quel codice presenta un bel po' di errori (anche gravi ...) ...

    Ma

    cbyte

    cosa e'?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    char cbyte[1];

    stringa di un carattere

    poi dove sbaglio?
    leggo da un file carattere per carattere
    converto il numero (che però non funziona)
    scrivo questo numero nell'altro file

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che senso ha dichiarare un vettore di 1 carattere?

    Semmai dichiari un carattere con

    char cbyte;

    Non essendo una stringa ma un semplice carattere, per visualizzarlo scrivi

    printf("Il carattere è:%c\n", cbyte);

    Per visualizzare il suo valore ASCII, scrivi

    printf("Il valore ASCII è:%d\n", (int)cbyte);

    Se poi vuoi convertire il valore ASCII in stringa, allora usi la sprintf ...

    Per capirci

    codice:
       char cbyte;
       char valasc[4];
    
       cbyte='A';
       printf("Carattere: %c\n",cbyte);
       printf("Valore ASCII: %d\n", (int)cbyte);
       sprintf(valasc, "%d", (int)cbyte);
       printf("%s\n", valasc);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    no io uso la read perchè quando vado a leggere da file accetta solo una stringa non un carattere

    inoltre la conversione non funziona

    leggo i primi 99 caratteri del file

    codice:
       int j;
     char cbyte[1];
     char str[10];
     fd=open("f1",O_RDONLY,0777);
     fd1=open("f2",O_WRONLY | O_TRUNC,0777);
     for (j=0;j<=99;j++)
      {
       read(fd,cbyte,1);
       printf("IL BYTE LETTO è:%s\n",cbyte);
       printf("Valore ASCII: %d\n", (int)cbyte);
       sprintf(str, "%d", (int)cbyte);
       write(fd1,str,1);
      }
    
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma cosa c'entra ... la read accetta un puntatore ... puoi quindi scrivere

    char cbyte;

    e

    read(fd, &cbyte, 1);

    e poi, dato che comunque cbyte[1] NON e' una stringa, NON usare

    printf("IL BYTE LETTO è:%s\n",cbyte);

    ma

    printf("IL BYTE LETTO è:%c\n", cbyte);

    Il resto dovrebbe funzionare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.