File descriptor

di il
6 risposte

File descriptor

Perchè all'interno del for dopo la comparazione delle stringhe, newLines(fd) che ritorna il numero di '\n' di un file, ritorna un numero casuale? E' come se il fd non puntasse più al file aperto. Se non lo faccio precedere dalla funzione strcmp funziona normalmente oppure se faccio l'open nel for.
Allegati:
14867_f3cfcf78eda2f093dba7842cee27d054.png
14867_f3cfcf78eda2f093dba7842cee27d054.png

6 Risposte

  • Re: File descriptor

    Mostra anche il codice della funzione ma qui nel forum per poterlo provare ... non con una immagine.
  • Re: File descriptor

    =====MAIN=====
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include "newLines.h"
    
    int main(int argc, char *argv[]){
      FILE *fd;
      int i;
      fd = fopen(argv[argc-1],"r");
     
      if(fd==NULL || argc<2){
        printf("FILE NOT FOUND");
        exit(1);
      }
      for(i=1;i<argc;i++){
         if(strcmp(argv[i],"w")==0)  { printf("%d\n",newLines(fd));}
      }
      printf("OK\n");
      exit(0);
    
    }
    
    =====NEWLINES=====
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "newLines.h"
    
    int newLines(FILE *fd){
      int count;
      while(1){
        if(fgetc(fd)=='\n')
          count++;
        if(feof(fd)) break;
      }
      return count;
     
    }
    

    =====MAKEFILE=====
    
    CC=gcc
    CFLAGS=-c -Wall -Wextra
    
    all : wc
    
    wc : main.o newLines.o
    	$(CC) main.o newLines.o -o wc
    
    main.o : main.c 
    	$(CC) $(CFLAGS) main.c	
    
    newLines.o : newLines.c
    	$(CC) $(CFLAGS) newLines.c
    
    
  • Re: File descriptor

    Ma la variabile count non è inizializzata ...
  • Re: File descriptor

    È proprio quello, mo funziona. Non riesco a capire perchè al di fuori del for la inizializza comunque a 0. (caso fortuito dato che in precedenza il banco di memoria di quella variabile non sarà stato utilizzato).
    Quindi una variabile non inizializzata potrebbe contenere un valore random.
  • Re: File descriptor

    Paolovox ha scritto:


    Quindi una variabile non inizializzata potrebbe contenere un valore random.
    E' una delle prime nozioni che si impara ...
  • Re: File descriptor

    Chiedo venia!!! (in Java o Python l'avrebbe inizializzata a 0, in assembly probabilmente a 0x7fffeffc)
Devi accedere o registrarti per scrivere nel forum
6 risposte