Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Problema di Lettura da file

    Vi scrivo il codice

    queste sono tre funzioni che ho definito

    int apriFile1() //apertura del file nn ordinato
    {
    int ds_file;

    ds_file = open(FILE_REC, O_CREAT|O_RDWR|O_APPEND, 0660);
    if(ds_file == -1)
    {
    printf("Errore nell'apertura del file\n");
    return -1;
    }

    return ds_file;
    }

    char *allocaStringa() {
    char *vector;

    vector = (char*) malloc(BUF_SIZE*sizeof(char));
    memset(vector,0,BUF_SIZE*sizeof(char));

    return vector;
    }

    char *leggiStringa(int ds_file) { // legge una stringa da file e la memorizza in un puntatore di char

    int result;
    char *stringa = allocaStringa();
    char *stringa2 = allocaStringa();

    while(*stringa2 != '\n') {
    memset(stringa2,0,BUF_SIZE*sizeof(char));
    result = read(ds_file,stringa2,sizeof(char));

    if(result == -1) {
    printf("Errore nella chiamata read\n");
    }

    strcat(stringa,stringa2);
    }

    free(stringa2);

    return stringa;


    e questo è il main di prova che ho fatto

    main() {
    int ds_file;
    char *s1,*s2;

    ds_file = apriFile1();

    s1 = leggiStringa(ds_file);

    for(; *s1 != '\0';s1++)
    printf("%c",*s1);

    s2 = leggiStringa(ds_file);

    for(; *s2 !='\0';s2++)
    printf("%c",*s2);

    close(ds_file);
    return 0;

    nel file di testo che ho creato c'è scritto

    Gianni
    Luigi

    legge e stampa Gianni, ma quando tenta di leggere Luigi va in loop...

    aiutatemi vi prego nn riesco a capire il motivo...

    un grazie anticipato a tutti


    p.s non posso utilizzare le funzioni come fopen o fscanf ecc...x vincoli accademici

  2. #2
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    VVoVe: VVoVe:
    potresti indentare il codice e usare i tag CODE per maggior comprensione??
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  3. #3
    codice:
    int apriFile1() //apertura del file nn ordinato 
    { 
    int ds_file; 
    
    ds_file = open(FILE_REC, O_CREAT|O_RDWR|O_APPEND, 0660); 
    if(ds_file == -1) 
    { 
    printf("Errore nell'apertura del file\n"); 
    return -1; 
    } 
    
    return ds_file; 
    } 
    
    char *allocaStringa() { 
    char *vector; 
    
    vector = (char*) malloc(BUF_SIZE*sizeof(char)); 
    memset(vector,0,BUF_SIZE*sizeof(char)); 
    
    return vector; 
    } 
    
    char *leggiStringa(int ds_file) { // legge una stringa da file e la memorizza in un puntatore di char 
    
    int result; 
    char *stringa = allocaStringa(); 
    char *stringa2 = allocaStringa(); 
    
    while(*stringa2 != '\n') { 
    memset(stringa2,0,BUF_SIZE*sizeof(char))
    ; 
    result = read(ds_file,stringa2,sizeof(char)); 
    
    if(result == -1) { 
    printf("Errore nella chiamata read\n"); 
    } 
    
    strcat(stringa,stringa2); 
    } 
    
    free(stringa2); 
    
    return stringa; 
    }
    e questo è il main di prova che ho fatto
    codice:
    main() { 
    int ds_file; 
    char *s1,*s2; 
    
    ds_file = apriFile1(); 
    
    s1 = leggiStringa(ds_file); 
    
    for(; *s1 != '\0';s1++) 
    printf("%c",*s1); 
    
    s2 = leggiStringa(ds_file); 
    
    for(; *s2 !='\0';s2++) 
    printf("%c",*s2); 
    
    close(ds_file); 
    return 0;

  4. #4
    Utente di HTML.it L'avatar di RokStar
    Registrato dal
    Dec 2001
    Messaggi
    937
    Aggiungo un po' di leggibilità al codice...
    codice:
    int apriFile1(){ 
    	int ds_file; 
    	ds_file = open(FILE_REC, O_CREAT|O_RDWR|O_APPEND, 0660); 
    	if(ds_file == -1) { 
    		printf("Errore nell'apertura del file\n"); 
    		return -1; 
    	} 
    	return ds_file; 
    } 
    
    char *allocaStringa() { 
    	char *vector; 
    	vector = (char*) malloc(BUF_SIZE*sizeof(char)); 
    	memset(vector,0,BUF_SIZE*sizeof(char)); 
    	return vector; 
    } 
    
    char *leggiStringa(int ds_file) { // legge una stringa da file e la memorizza in un puntatore di char 
    	int result; 
    	char *stringa = allocaStringa(); 
    	char *stringa2 = allocaStringa(); 
    	while(*stringa2 != '\n') { 
     		memset(stringa2,0,BUF_SIZE*sizeof(char)); 
    		result = read(ds_file,stringa2,sizeof(char)); 
    		if(result == -1) { 
    			printf("Errore nella chiamata read\n"); 
    		} 
    	strcat(stringa,stringa2); 
    	} 
    	free(stringa2); 
    	return stringa; 
    }
    Main:
    codice:
    main() { 
    	int ds_file; 
    	char *s1,*s2; 
    	ds_file = apriFile1(); 
    	s1 = leggiStringa(ds_file); 
    	for(; *s1 != '\0';s1++) 
    	printf("%c",*s1); 
    
    	s2 = leggiStringa(ds_file); 
    
    	for(; *s2 !='\0';s2++) 
    	printf("%c",*s2); 
    
    	close(ds_file); 
    	return 0;
    Come fai a scrivere codice senza indentare?
    che ce l'hai tre e cinco? Tre e cinco?!?

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