Funzione read in unix

di il
3 risposte

Funzione read in unix

Salve ragazzi. qualcuno potrebbe aiutarmi con questo problema??
ho un file di testo dove in ogni riga ce " nomeutente:password ".
devo creare una directory per ogni nomeutente presente nel file...come posso fare a leggere solo il nomeutente??help me....

3 Risposte

  • Re: Funzione read in unix

    Ciao, dopo aver letto il file e salvato in una matrice char:
    in globale:
    
    char buffer[124][124];
    
    funzione per leggere da file:
    
    void ReadFile()
    {
    int i=0;
     int c=0,a;
     FILE *fp;
     fp = fopen("percorsofile","r");
     while(c!=EOF)
     {
    
    	 for(a=0; (c=getc(fp))!=':' && c!=EOF; a++)
    		 buffer[i][a]=c;
    
    	 for(c=0;(c=getc(fp))!='\n' && c!=EOF;);
    	 i++;
     }	
    	fclose(fp);
    }
    
    questa funzione legge le righe del file, quando incontra ":", legge la riga di sotto salvando tutto nella matrice buffer
    Ciao.
  • Re: Funzione read in unix

    Io pero devo usare solo le funzioni standard del C e le funzioni di programmazioni UNIX( read, open,write etc...)come posso fare? grazie lo stesso
  • Re: Funzione read in unix

    
    
    #include <fcntl.h>
    
    char buffer[BUFSIZ]={'\0'};
    int main()
    {
    	int fp, n;
    	if(fp = open("percorsofile",O_RDONLY,0))==-1)
    		return 0;
    	if(n=read(fp,buffer,BUFSIZ)<=0)
    		return 0;
    	
    }
    
    questo è per leggere.
    Non ho linux per testarlo ma dovrebbe essere cosi.
    Invece puoi fare cosi per ottenere una matrice di char con i nomi utenti:
    
    char buffer[BUFSIZ];//è lo stesso usato nel codice di prima. Contiene quindi il contenuto del file 
    char buf[123][123];
    
    int getUsernameFromBuffer()
    {
    	char* p;
    	int i=0;
    	int ln=strlen(buffer);
    	do
    	{
    		p=strstr(buffer,":");
    		strncpy(&buf[i][0],buffer,p-buffer);
    		p=strstr(buffer,"\n");
    		if(p)
    			strcpy(buffer,++p);
    		i++;
    	}
    	while(p);
    	return 1;
    }
    
    buffer contiene i dati presi dal file quindi ha una struttura
    nomeutente:password\n
    ''
    ''
    ''
    quindi all'uscita della funzione la matrice buf conterrà tutti i nomi utente.
    Ciao
Devi accedere o registrarti per scrivere nel forum
3 risposte