Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-07-2008, 09:25   #1
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
[c] problema con fwrite

Vi scrivo perchè ho un problema con la scrittura di numeri su file ecco un esempio:

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


void main()

{

FILE *fp;
char filename[]="C:\\Users\\nomeutente\\Desktop\\studente.txt";
int A[]={1,2,3,4,5,6,7,8,9};


fp=fopen(filename,"wb");
if((fwrite(A,sizeof(int),9,fp)) != 9){
puts("errore di scrittura su file");
exit(1);
}
fclose(fp);

}

Il problema è ke sul file anziche dell'array di numeri mi trovo il seguente output :



Come mai? potete consigliarmi ?
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 09:46   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16212
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Vi scrivo perchè ho un problema con la scrittura di numeri su file ecco un esempio:

#include <stdio.h>
Quando scrivi del codice sorgente, adopera il tag "code".
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Codice:
#include <stdlib.h>
#include <string.h>


void main()
main non deve essere void.
Esistono due modi accettati dall standard ANSI C per dichiarare main, e in entrambi i casi la funzione restituisce int.
Leggi il Kernighan&Ritchie.
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Codice:
{

	FILE *fp;
	char filename[]="C:\\Users\\nomeutente\\Desktop\\studente.txt";
	int A[]={1,2,3,4,5,6,7,8,9};
	

	fp=fopen(filename,"wb");
	if((fwrite(A,sizeof(int),9,fp)) != 9){
		puts("errore di scrittura su file");
		exit(1);
	}
	fclose(fp);

}
Il problema è ke
Questo è un forum in lingua italiana.
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
sul file anziche dell'array di numeri mi trovo il seguente output :
Sul file ti ritrovi i valori interi da 1 a 9, invece che i caratteri ASCII da 1 a 9.
Prova a visualizzare il file con od anziché con cat...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:02   #3
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
Se ho utilizzato ke al posto di che è proprio per integrarmi con il linguaggio che viene utilizzato ormai sia nelle chat che nei forum, cioè un linguaggio sbrigativo, di poche parole, se questo vi crea dei problemi di comprensione mi scuso posticipatamente.

Detto questo vorrei dire che non ho capito che cosa voleva dire con Prova a visualizzare il file con od anziché con cat..., io ho fatto un test, ho provato a prelevare i numeri dal file con fread e l'array si è riempito dei numeri salvati sul file, quindi i numeri ci sono e si possono leggere solo se prelevati con un programma c, ma se volessi far leggere il file .txt a qualcuno con il wordpad per esempio non potrei come risolvere questo problema?

Una possibile soluzione sarebbe dichiarare anzichè un array di interi un array di char........

Ultima modifica di Prince_81 : 22-07-2008 alle 10:06.
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:51   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Se ho utilizzato ke al posto di che è proprio per integrarmi con il linguaggio che viene utilizzato ormai sia nelle chat che nei forum
Non su questo forum...

Quote:
Detto questo vorrei dire che non ho capito che cosa voleva dire con Prova a visualizzare il file con od anziché con cat...
Per te niente (ZioSilvio, tutto preso dal "ke", non ha notato che eri su windows dove "od" non esiste ).
Semplicemente, hai costruito un file binario, costruito dai _numeri_ 1, 2, 3... e non dalle _stringhe_ "1", "2", "3".
Prova questo:

Codice:
  int pos;
  ...
  for (pos=0; pos<9; ++pos)
    fprintf(fp, "%d\r\n", a[pos]);
  ...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 11:50   #5
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
Il programma ke devo fare pretende l'utilizzo di un file binario e la scrittura di una struttura su di esso ecco un esempio:

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct generale {char nome[30];char indirizzo[30];int stipendio;int eta;}st;
void main()

{

	FILE *fp;
	char filename[]="C:\\Users\\nomeutente\\Desktop\\studente.txt";

	puts("Inserire nome");
	gets(st.nome);
	puts("Inserire indirizzo");
	gets(st.indirizzo);
	puts("inserire stipendio");
	scanf("%d",&st.stipendio);
	puts("inserire eta");
	scanf("%d",&st.eta);
	

	fp=fopen(filename,"wb");
	if((fwrite(&st,sizeof(st),1,fp)) != 1){
		puts("errore di scrittura su file");
		exit(1);
	}
	fclose(fp);

}
Ecco perchè insisto sull'utilizzo di fwrite perchè leggo sul mio manuale ke si utilizza quando si usano file binari e poi così facendo posso anche aggiornare più facilmente i dati.
Il programma non è completo l'ho spezzettato per non dilungarmi in quanto il mio problema è semplicemente poter leggere anche i numeri sul file .txt, ho provato nella struttura ha creare tutte variabili char ma non so se per il mio esercizio va bene.
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 12:02   #6
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Il programma ke devo fare pretende l'utilizzo di un file binario e la scrittura di una struttura su di esso
(ancora col ke )
Quindi la tua implementazione era corretta, ma quello che crei è un file binario, _non_ un file di testo. Quindi non puoi aprirlo con un editor di testo (notepad & co), vedresti solo spazzatura.
Non è che semplicemente aggiungendo ".txt" all'estensione si aggiusta magicamente tutto
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 12:13   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16212
Quote:
Originariamente inviato da ilsensine Guarda i messaggi
ZioSilvio, tutto preso dal "ke", non ha notato che eri su windows dove "od" non esiste
Primo e più importante: Ziosilvio, con la esse minuscola.

Poi: od forse non c'è per Windows, ma c'è per Cygwin (che gira sotto Windows).
In alternativa si può usare un editor esadecimale, come Hexedit.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 20:04   #8
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
l'estensione .txt c'è già quando creo il file.
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 20:23   #9
Big Bamboo
Member
 
Iscritto dal: Jul 2008
Città: Nel mio studio
Messaggi: 168
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
l'estensione .txt c'è già quando creo il file.
L'estensione non conta nulla, se salvi i dati in binario, solo un editor esadecimale o un programma che interpreti i dati potranno visualizzare il vero contenuto del file.
__________________
Since Rocco Siffredi, the saying "pain in the ass" got a total new meaning
Big Bamboo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Un gruppo di ladri ha usato Google Maps ...
Apple non si fida di Samsung per la real...
Windows 11: un nuovo driver nativo mette...
Vi hanno regalato buoni Amazon? Intanto ...
Via acari, polvere e sporco da materassi...
Cuffie Beats in super offerta su Amazon,...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
DAZN lancia la sua offerta di Natale: My...
Gigabyte fa marcia indietro? Sparito il ...
Alcuni rivenditori giapponesi bloccano l...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v