c dichiarare una variabile di soli n bit

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
pc_andreone
Prode Principiante
Messaggi: 126
Iscrizione: lunedì 15 gennaio 2007, 2:57

c dichiarare una variabile di soli n bit

Messaggio da pc_andreone »

ciao, intanto premetto che utilizzo la  funzione

Codice: Seleziona tutto

int d, i...;
File *fin=fopen ("*.*, "rb");
for(----){
d=getc(fin);
printf("\n%d", d);}
Così facendo il programma mi dà una sequenza di numeri compresi tra 0 e 255. (spero di essere stato chiaro)

1: Come mai mi dà solo un numero compreso tra queste due cifre se pur un integer ha una limite molto più ampio?
2: Vi è un modo per far si che sia io a scegliere quanti bit leggere dall'inizio del file e trasformarli in decimale?
    Del tipo: un intero di 2 bit al posto della variabile "d", mi darebbe una sequenza tra 0 e 3, se bosse di 3 bit fino a 7 di 4 fino a 15 e  così via. E' possibile dichiarare la grandezza in bit della variabile?

3:se vi è tale possibilità, per scriverlo a schermo o in un file mi basta la funzione
   

Codice: Seleziona tutto

f/printf("%d", d);
o cosa devo scrivere? spero di essere stato chiaro, in tutti i libri (due o tre) che ho letto non riesco a trovare risposta.

Grazie anticipate :)
Dahman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: mercoledì 31 ottobre 2007, 8:29
Località: Torino

Re: c dichiarare una variabile di soli n bit

Messaggio da Dahman »

Ciao
1: Come mai mi dà solo un numero compreso tra queste due cifre se pur un integer ha una limite molto più ampio?
perché getc(fin) ti ritorna un char e non un int.

Ciao

Dahman
pc_andreone
Prode Principiante
Messaggi: 126
Iscrizione: lunedì 15 gennaio 2007, 2:57

Re: c dichiarare una variabile di soli n bit

Messaggio da pc_andreone »

Ciao

Citazione
1: Come mai mi dà solo un numero compreso tra queste due cifre se pur un integer ha una limite molto più ampio?
perché getc(fin) ti ritorna un char e non un int.

Ciao

Dahman
ok, e per il resto? come faccio a scegliere quanti bit leggere per volta?
Dahman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: mercoledì 31 ottobre 2007, 8:29
Località: Torino

Re: c dichiarare una variabile di soli n bit

Messaggio da Dahman »

ok, e per il resto? come faccio a scegliere quanti bit leggere per volta?
Non saprei.
Se usassi il C++ ti direi che una soluzione potrebbe essere il bitset che é un container di bit:

bitset equivale ad una variabile a 12 bit per esempio e la puoi usare per leggere dei dati da un file,

ma non credo che ci sia qualcosa di simile in C.

Ciao

Dahman
pc_andreone
Prode Principiante
Messaggi: 126
Iscrizione: lunedì 15 gennaio 2007, 2:57

Re: c dichiarare una variabile di soli n bit

Messaggio da pc_andreone »

nessuno mi aiuta
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: c dichiarare una variabile di soli n bit

Messaggio da Zoff »

pc_andreone ha scritto: nessuno mi aiuta
Dai un occhiata alla fscanf

ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
pc_andreone
Prode Principiante
Messaggi: 126
Iscrizione: lunedì 15 gennaio 2007, 2:57

Re: c dichiarare una variabile di soli n bit

Messaggio da pc_andreone »

Ho dato un'occhiata, e non cambia molto, nel senso che la fscanf mette nella variabile il corrispettivo in bit del file, e poi quando lo scrivi ci metti la conversione, per esempio %d e stampa in decimale..(da quello che ho capito)....ma la variabile minore che il c mi permette di creare ha 8 bit,, quindi....
MA ORA SORGE UN ALTRO PROBLEMA.

Codice: Seleziona tutto

#include <stdio.h>
#define N 6000
int a, bit[256], b, c, d[N],i, k, s, j, uf[256];
main(){
	FILE *fin=fopen ("Video_0000.ogg", "rb");
		for(i=0; i<N; i++){
			d[i]=getc(fin);
		}
		for(i=0; i<N; i++){
			printf("\n%d", d[i]);
	}
}
Questo programma prima mi dava tutto. alla compilazione successiva mi dà solo zeri....ha funzionato per giorni e ora non più, come mai?----il file esiste ancora, non chiedo più byte di quanti ne ha il file e ho controllato tutto...come mai?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: c dichiarare una variabile di soli n bit

Messaggio da Zoff »

pc_andreone ha scritto: Ho dato un'occhiata, e non cambia molto, nel senso che la fscanf mette nella variabile il corrispettivo in bit del file, e poi quando lo scrivi ci metti la conversione, per esempio %d e stampa in decimale..(da quello che ho capito)....ma la variabile minore che il c mi permette di creare ha 8 bit,, quindi....
MA ORA SORGE UN ALTRO PROBLEMA.

Codice: Seleziona tutto

#include <stdio.h>
#define N 6000
int a, bit[256], b, c, d[N],i, k, s, j, uf[256];
main(){
	FILE *fin=fopen ("Video_0000.ogg", "rb");
		for(i=0; i<N; i++){
			d[i]=getc(fin);
		}
		for(i=0; i<N; i++){
			printf("\n%d", d[i]);
	}
}
Questo programma prima mi dava tutto. alla compilazione successiva mi dà solo zeri....ha funzionato per giorni e ora non più, come mai?----il file esiste ancora, non chiedo più byte di quanti ne ha il file e ho controllato tutto...come mai?
Perché non funzioni quel codice non lo so però ti facico notare che come parametro della fscanf puoi indicare il numero di caratteri da leggere, per cui è vero sì che non puoi leggere meno di 8bit ma rest ail fatto che puoi leggerne dei multipli, 8,16,24,32, etc...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
pc_andreone
Prode Principiante
Messaggi: 126
Iscrizione: lunedì 15 gennaio 2007, 2:57

Re: c dichiarare una variabile di soli n bit

Messaggio da pc_andreone »

in che modo scusa, potresti scrivermi un esempio.....grazie dell'aiuto
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: c dichiarare una variabile di soli n bit

Messaggio da Zoff »

pc_andreone ha scritto: in che modo scusa, potresti scrivermi un esempio.....grazie dell'aiuto
Per indicare cosa legger ein una scanf devi passare una sctringa con caratteri speciali per indicare come interpretare i dati ricevuti, i caratteri speciali sono composti da % piu' una lettera che indicat la tipologia di dati da leggere.
Per indicare il numero di caratteri devi semplicemettere mettere tra % e la lettera un numero.

Es.

Codice: Seleziona tutto

char* str;
fscanf(file,"%10s",str)
Sono un po' arrugginito in C spero di aver ricordato tutto...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti