Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-07-2006, 00:41   #1
Biscazziere
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 27
[c] Sapere numero di righe di un file di testo

Ciao, leggo le parole che compongono un file di testo con la funzione fscanf, che salta i caratteri tipo a capo e spazio. Come posso fare per sapere a che riga del file mi trovo mentre sto leggendo una parola con fscanf?

Grazie.
Biscazziere è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 07:52   #2
Starise
Senior Member
 
L'Avatar di Starise
 
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 984
Prova a leggerlo con la funzione fgets. Quando il carattere è uguale a '\n' allora incrementi un contatore di 1. Non è difficile
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU Radeon RX 9070 XT + RTX 4070 Super | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz
Starise è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 10:41   #3
Biscazziere
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 27
il problema è che sono vincolato ad usare fscanf... ho letto che ad esempio scrivendo fscanf(fp, "%[^\n]s", parola) posso evitare/includere dei caratteri tipo lo \n. Non c'è modo di fare leggere a fscanf anche gli a capo invece di saltarli? Oppure di usare una compinazione di fscanf e quanlche altra funzione

Ultima modifica di Biscazziere : 17-07-2006 alle 10:53.
Biscazziere è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 13:43   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Biscazziere
il problema è che sono vincolato ad usare fscanf... ho letto che ad esempio scrivendo fscanf(fp, "%[^\n]s", parola) posso evitare/includere dei caratteri tipo lo \n. Non c'è modo di fare leggere a fscanf anche gli a capo invece di saltarli? Oppure di usare una compinazione di fscanf e quanlche altra funzione
la fscanf ?
non l'hanno ancora eliminata ?
Ti posso solo consigliare di contare i \n ad ogni fscaneffata ...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:07   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Biscazziere
il problema è che sono vincolato ad usare fscanf...
allora l'esercizio non si può fare perché non sai quanto spazio allocare per il buffer

Quote:
Non c'è modo di fare leggere a fscanf anche gli a capo invece di saltarli? Oppure di usare una compinazione di fscanf e quanlche altra funzione
fai una fscanf a vuoto e usa fread
leggi con fread a blocchi di 4 kb e analizza i blocchi byte per byte; ad ogni \n che trovi incrementi il contatore.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:09   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da 71104
allora l'esercizio non si può fare perché non sai quanto spazio allocare per il buffer
mi correggo: puoi allocare uno spazio equivalente alla dimensione del file
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:10   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da 71104
mi correggo: puoi allocare uno spazio equivalente alla dimensione del file
mi correggo nuovamente: non puoi perché dopo che hai allocato il buffer un altro processo potrebbe ingrandire il file scrivendoci un'unica linea lunga il doppio delle dimensioni precedenti

LOL, ma questo Linux fa acqua da tutte le parti
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:13   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da 71104
LOL, ma questo Linux fa acqua da tutte le parti
ma neanche Linux, diciamo proprio Unix

ma vabbè, porello... è vecchio di decenni ormai...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:18   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
bah, io mi sto ancora sinceramente chiedendo chi ha scritto i prototipi delle funzioni Unix come c***o pensava che avrebbero dovuto fare i programmatori a sapere le dimensioni dei buffer
mi piacerebbe tanto conoscere la risposta... praticamente quelle funzioni sono inutilizzabili
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 14:48   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 71104
ma neanche Linux, diciamo proprio Unix

ma vabbè, porello... è vecchio di decenni ormai...
Che centrano unix e linux? Con C avresti gli stessi problemi su qualsiasi sistema operativo.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:02   #11
Biscazziere
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 27
Dunque, io leggo le varie parole del file di testo così:

fscanf(fp, "%s", parola);

per quanto ne so la fscanf elimina automaticamente gli spazi e gli a capo, quindi non vengono letti gli spazi e gli a capo e non ho modo di verificare quando è stato letto un a capo. Non c'è modo con la fscanf di far leggere gli a capo e di metterli al fondo della stringa "parola", in modo poi da poter verificare?

Cosa significa "fare una fscanf a vuoto e poi usare fread?"
Biscazziere è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:16   #12
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Biscazziere
per quanto ne so la fscanf elimina automaticamente gli spazi e gli a capo, quindi non vengono letti gli spazi e gli a capo e non ho modo di verificare quando è stato letto un a capo.
'azz é vero! il mio suggerimento va a farsi fottere

Quote:
Originariamente inviato da Biscazziere
Non c'è modo con la fscanf di far leggere gli a capo e di metterli al fondo della stringa "parola", in modo poi da poter verificare?
che io sappia no ...

Quote:
Originariamente inviato da Biscazziere
Cosa significa "fare una fscanf a vuoto e poi usare fread?"
suppongo fare un fscanf per rispettare le regole dell'esercizio e poi fai come pare a te
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:24   #13
Biscazziere
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 27
su un sito ho trovato una sintassi del genere, c'è scritto che serve per modificare quello che viene letto dalla fscanf:

fscanf(fp, "%[^\n]s", parola);

Non ho trovato molte spiegazioni, qualcuno ne sa qualcosa?

Posso usare insieme alla fscanf qualche altra funzione tipo fgetc? Avevo provato solo che usando anche fgetc mi si sballava il punto a cui era arrivato il file pointer per la fscanf
Biscazziere è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:39   #14
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Biscazziere
su un sito ho trovato una sintassi del genere, c'è scritto che serve per modificare quello che viene letto dalla fscanf:

fscanf(fp, "%[^\n]s", parola);

Non ho trovato molte spiegazioni, qualcuno ne sa qualcosa?

Posso usare insieme alla fscanf qualche altra funzione tipo fgetc? Avevo provato solo che usando anche fgetc mi si sballava il punto a cui era arrivato il file pointer per la fscanf
dal man di fscan
Quote:
... reading input until no more valid input can
be read, or up to the first byte which is not a white-space
character which remains unread.
Secondo me non c'é soluzione con la fscanf.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:43   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
infatti, rassegnati e goditi la possibilità di dire al tuo prof che è niubbo...

Quote:
Originariamente inviato da trallallero
suppongo fare un fscanf per rispettare le regole dell'esercizio e poi fai come pare a te
esatto
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 15:58   #16
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da 71104
infatti, rassegnati e goditi la possibilità di dire al tuo prof che è niubbo...
beato lui, che goduria
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 16:03   #17
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
ASPETTA!
prima di niubbare il tuo prof!

si puó fare:
Codice:
   fscanf(pf, "%c", s );
dove s é comunque una stringa (s[2])
Devi poi analizzare s[0]
Ora vo via spero tu abbia capito

EDIT: ieri con la fretta non ci ho pensato ...
Codice:
   char c;
 ...
   fscanf(pf, "%c", &c );
non serve s[] come stringa ma basta un char singolo e passi alla fscanf l'indirizzo
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve

Ultima modifica di trallallero : 18-07-2006 alle 06:55.
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 16:06   #18
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Biscazziere
su un sito ho trovato una sintassi del genere, c'è scritto che serve per modificare quello che viene letto dalla fscanf:

fscanf(fp, "%[^\n]s", parola);

Non ho trovato molte spiegazioni, qualcuno ne sa qualcosa?
Ciao,
la fscanf() in oggetto e' stata scritta pensando che accetti in ingresso delle espressioni regolari. Non mi risulta che sia possibile, magari si trattava di una libreria non standard, oppure e' una delle tante cose che non conosco.

Certo che avendo a disposizione le espressioni regolari, il tuo programma si ridurrebbe ad una sola linea.

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 17:30   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da sottovento
Ciao,
la fscanf() in oggetto e' stata scritta pensando che accetti in ingresso delle espressioni regolari. Non mi risulta che sia possibile, magari si trattava di una libreria non standard, oppure e' una delle tante cose che non conosco.
si che è possibile...

perché come si fa in una sola linea con le espressioni regolari...?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 18:33   #20
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Potresti provare con qualcosa di questo tipo:
Codice:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	char c;
	int riga = 0;
	FILE *in;

	
	if (argc != 2)
		return 0;
	in = fopen(argv[1], "r");
	if (in == NULL) {
		perror("fopen()");
		exit(EXIT_FAILURE);
	}
	for (;;) {
		char buffer[256] = {0};
		int result = fscanf(in, "%255[^ \f\n\r\t\v]%c", buffer, &c);

		if (result == EOF)
			break;
		if (result == 2) {
			printf("riga: %d parola: %s\n", riga+1, buffer);
			if (c == '\n')
				++riga;
		} else if (result == 0) {
			if (fscanf(in, "%c", &c) == 1 && c == '\n') {
				printf("riga %d vuota\n", riga+1);
				++riga;
			}
		} else {
			puts("Percepisco una turbolenza nella forza...");
			break;
		}
			
	}
	fclose(in);

	return 0;
}
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
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: 04:00.


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