Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Veramente MSDN dice

    "r+" Opens for both reading and writing. (The file must exist.)
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #12
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    Re: Re: C - fprintf per modificare un record

    Originariamente inviato da shodan
    la fprintf dovrebbe accodare il dato modificato, non sostituirlo.
    Va bene lo stesso. Accoderò un numero a quello già presente ottenendo un nuovo numero a 2 cifre. Userò quello come valore sentinella.

    Il problema è che non riesco nemmeno a far questo.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #13
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Già. A dimostrazione che ho dimenticato del tutto il C ( e di cui non sento la mancanza )

  4. #14
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Insomma, mi appendo??
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #15
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Magari se postassi qualcosa di compilabile si potrebbe capire di più, ma con quel frammento di codice, più di qualche supposizione non si può fare.

  6. #16
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Dunque, creare un file .txt e metteteci questi dati dentro

    1 nome1 cognome1 indirizzo1 021056931 0
    2 nome2 cognome2 indirizzo2 021056932 0
    3 nome3 cognome3 indirizzo3 021056933 0
    4 nome4 cognome4 indirizzo4 021056934 0
    5 nome5 cognome5 indirizzo5 021056935 0
    6 nome6 cognome6 indirizzo6 021056936 0
    7 nome7 cognome7 indirizzo7 021056937 0
    e provatelo con questo codice

    codice:
    struct _Nominativo
    {
    	char Nome[20];
    	char Cognome[20];
    	char Telefono[20];
    	char Indirizzo[50];
    };
    
    typedef struct _Nominativo Nominativo;
    
    struct _Rubrica
    {
    	unsigned int Index;
    	Nominativo Nome;
    	unsigned int Eliminato;
    };
    
    
    typedef struct _Rubrica Rubrica;
    
    
    int main()
    {
    
           FILE *f = fopen("file.txt","r+");
    	int Index;
    
    	Rubrica rub;
    
    	printf("Inserire l'indice da eliminare: ");
    	scanf("%d",&Index);
    
    	if (Index < 0)
    		printf("\nIndice non valido");
    	else
    		if (Index > ProssimoIndice(f) - 1)
    			printf("\nIl record selezionato non esiste");
    		else
    		{
    			fseek(f,0,SEEK_SET);
    
    			for (int i = 0; i < Index; i++)
    			{
    				fscanf(f,"%d %s %s %s %s %d",&rub.Index,rub.Nome.Nome,rub.Nome.Cognome,rub.Nome.Indirizzo,rub.Nome.Telefono,&rub.Eliminato);
    			}
    
    				fprintf(f,"%d",1);
    		}
    
    }
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #17
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Manca ProssimoIndice()

  8. #18
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Here is it

    codice:
    unsigned int ProssimoIndice(FILE *f)
    {
    	Rubrica rub;
    
    	unsigned int i;
    	i = 0;
    	fseek(f,0,SEEK_SET);
    
    	while(!feof(f))
    	{
    		fscanf(f,"%d %s %s %s %s %d",&rub.Index,rub.Nome.Nome,rub.Nome.Cognome,rub.Nome.Indirizzo,rub.Nome.Telefono,&rub.Eliminato);
    		i = rub.Index;
    	}
    
    	return i+1;
    }
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  9. #19
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Capito. Devi mettere una fseek prima della fprintf per riallineare il buffer interno.
    Il problema è calcolare l'offest corretto per posizionare il cursore di scrittura sul punto che vuoi. Il guaio è che la fscanf non fornisce il numero di byte letti, ma quello degli elementi letti.
    Con:
    Originariamente inviato da XWolverineX
    codice:
    			fseek(f,0,SEEK_SET);
    
    			for (int i = 0; i < Index; i++)
    			{
    				fscanf(f,"%d %s %s %s %s %d",&rub.Index,rub.Nome.Nome,rub.Nome.Cognome,rub.Nome.Indirizzo,rub.Nome.Telefono,&rub.Eliminato);
    			}
    			        fseek(f,ftell(f),SEEK_SET);
    
    				fprintf(f,"%d",1);
    		}
    
    }
    la fprintf funziona ma il risultato della scrittura varia a seconda del record usato.

  10. #20
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Il tuo metodo sembra funzionare bene (anche se non ho capito cosa hai fatto).
    In che senso il risultato della fprintf varia a seconda del testo??
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2026 vBulletin Solutions, Inc. All rights reserved.