Lettura array da file

di il
8 risposte

Lettura array da file

Ragazzi, secondo voi perchè questo programma non gira? o meglio, gira ma mi dà "Segmentation fault" sul terminale. Non capisco come mai, e ci sto impazzendo...
(n indica la dimensione del vettore)

#include<stdlib.h>
#include<stdio.h>

int main() {
  int n;
  int vett[5];
  FILE *fd;
  int i;

		/* apre il file */
  fd=fopen("durate.txt", "r"); 

		/* verifica errori in apertura */
  if( fd==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }

		/* legge il numero di elementi del vettore */
  fscanf(fd, "%d", &n);

  
		/* legge l'array */
  if(n>=5) 
    printf("Troppi elementi da leggere\n");
  else
    for(i=0; i<=4; i++)
      fscanf(fd, "%d", &vett[i]);


		/* stampa l'array */
  for(i=0; i<=n-1; i++)
    printf("%d\n", vett[i]);

		/* chiude il file */
  fclose(fd);

  return 0;
}

8 Risposte

  • Re: Lettura array da file

    Sicuro che le condizioni nei cicli for debbano utilizzare l'operatore '<=' ?
  • Re: Lettura array da file

    Premesso che quoto quanto detto da migliorabile, nei cicli for basta un i<n dato già hai fatto il controllo prima n>=5... posta il contenuto del file durate.txt, se no è difficile aiutarti
  • Re: Lettura array da file

    Ragazzi oggi ho riprovato e l'errore che mi sta dando invece è:
    "Errore in apertura del file: No such file or directory"
    Tra l'altro il codice l'ho preso da delle dispense disponibili online qui:

    la directory del file la copio direttamente trascinando il file su xcode.
    Il file si chiama "durate.txt" e l'ho salvato sul desktop e nella parte di apertura del file esce così scritto:
    /* apre il file */
      fd=fopen("file://localhost/Users/Gianlu/Desktop/durate.txt", "r");
    il file durate è un normale txt fatto con textedit in cui ci ho scritto:
    5 5 2 7 9 1
  • Re: Lettura array da file

    Ciao,
    mi sembra evidente che il percorso specificato non sia corretto. Ad occhio metterei
    C:/Users/...
  • Re: Lettura array da file

    Ciao, grazie per il suggerimento, so che potrebbe, anzi sicuramente sarà una cavolata, ma non riesco a capire cosa, visto che sono alla prime armi. Comunque ho modificato come mi hai detto e ancora nulla...
    /* apre il file */
    	fd = fopen("C:/Users/Gianlu/Desktop/durate.txt", "r");
  • Re: Lettura array da file

    E' un po' che non uso certe cose... è possibile che gli slash vadano al contrario, quindi \.
  • Re: Lettura array da file

    minomic ha scritto:


    E' un po' che non uso certe cose... è possibile che gli slash vadano al contrario, quindi \.
    La direzione degli slash non e' un problema!
    Si possono scrivere come '/' oppure come '\\'

    Comuqnue se continua a dire 'no such file or directory', vuol dire che il path e' sbagliato.
  • Re: Lettura array da file

    Risolto
    era semplicemente
    /Users/Gianlu/Desktop/durate.txt

    senza C:/

    grandi ragazzi. grazie mille. sempre super disponibili!!!
Devi accedere o registrarti per scrivere nel forum
8 risposte