Lettura file e utilizzo del valore all'interno

di Anonimizzato9432 il
9 risposte
Ciao ragazzi, è la prima volta che scrivo in questo forum..
vi pongo subito il mio quesito.. è possibile usando il linguaggio C leggere il contenuto di un file, dove è contenuto un numero es. ("12" contenuto nel file.txt) e usare questo numero come intero per svoglere una funzione? es a=12 b=(altro numero prelevato da un altro file) -> a-b=?
grazie in anticipo per le risposte!

9 Risposte

  • SI. Vedi le funzioni fopen, fgets, atoi, fclose ecc.
  • Cioè apro il file con fopen, lo leggo con fgets, converto la stringa contenuta nel file letto in int con atoi, e dopodiche lo chiudo con fopen.. giusto?
  • Perche non provi invece di indovinare? Le funzioni li ho messi in quell'ordine per una ragione
  • Simpatico.. non so scrivere un programma in 5 secondi..
    comunque ci sto provando.. ti posto quello che ho scritto fino ad ora..
    http://pastebin.com/J1A0YPv
    dimmi se sto facendo bene
  • Non so cosa stai facendo con tutte ste variabili ma ci sono degli errori nel tuo listato.
    Controlla riga 14, riga 18, riga 29.
    Nella riga 35 stai aprendo lo stesso file già aperto in precendenza nella riga 20.
    Ecco un esempio della lettura. Io non so cosa stai cercando di fare con tutti quei file aperti.
    
    #include<stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	FILE *input1 = NULL;
    	FILE *input2 = NULL;
    	int a = 0;
    	int b = 0;
    	char var[100];
    
    	if((input1 = fopen("C:\a.txt","r")) != NULL)
    	{
    		fgets(var,100,input1);
    		fclose(input1);
    		a = atoi(var);
    	}
    	if((input2 = fopen("C:\b.txt","r")) != NULL)
    	{
    		fgets(var,100,input2);
    		fclose(input2);
    		b = atoi(var);
    	}
    	printf("risultato %d", a - b);
    }
    
  • Grazie per l'aiuto! comunque il mio intento era di creare un cronometro senza la libreria time.h, e che si avvia quando inserisco la periferica usb.. questo infatti deve leggere l'inserimento dai log file di linux, e creare 3 che contengono secondi, minuti, e ore, da comparare con altri tre file con secondi minuti e ore, che vengono costantemente aggiornati tramite goto, che prendo dal comando: date..
    lo so è un po strana cm cosa ma è l'unica k m è venuta in mente
  • Per leggere il log devi avere diritti di root.
  • Sul bus ed il device puoi leggere la data e l'ora senza permessi. Ti riporto un esempio di una semplice memory card
    
    max@studio:~> lsusb | grep Genesys
    Bus 001 Device 003: ID 05e3:070e Genesys Logic, Inc. X-PRO CR20xA USB 2.0 Internal Card Reader
    max@studio:~>ll /dev/bus/usb/001/003
    crw-rw-r-- 1 root root 189, 2  5 nov 10:03 /dev/bus/usb/001/003
    
    001 && 003 te le fornisce 'lsusb'
    quando scolleghi la periferica:
    
    max@studio:~> ll /dev/bus/usb/001/003
    ls: impossibile accedere a /dev/bus/usb/001/003: No such file or directory
    
  • Grazie a tutti x le risposte! grazie anche a te ixamit! la tua idea mi ha incuriosito e ho provato, ma purtroppo h visto che il comando lsusb e successivamente ll /dev/ecc.. non mi da i secondi di quando è stato collegato il dispositivo! avete quindi altre idee?? come potrei dare i privilegi di root per leggere i log file?? grazie ancora per le risposte
Devi accedere o registrarti per scrivere nel forum
9 risposte