Segnalazione errore di Windows?!?

di il
15 risposte

Segnalazione errore di Windows?!?

Ciao a tutti,
Sono alle prime armi con il C e adesso sto studiando come salvare su file e le varie funzioni annesse. In particolare ho provato ad usarne un paio in un esempio che prevede:
1)Dichiarare la posizione del cursore all'inizio del programma.
2)Leggere un numero dal file(che io ho chiamato "teston") e salvarlo in una variabile(i) e stamparlo su schermo.
3)Poi ristampare la posizione del cursore per vedere se e di quanto si è spostato.

Ora,
F9, il programma compila, parte l'eseguibile, e mi viene fuori la segnalazione errori di Windows. Non capisco il perché, inoltre mi era già capitato altre volte con altri programmi dove l'eseguibile partiva, il programma faceva quello che doveva fare e poi al termine partiva la segnalazione errori che diceva di terminare l'exe.
Spero di aver esposto il mio problema in modo chiaro(se no chiedetemi pure di approfondire) e vi ringrazio in anticipo per le vostre risposte.

Qui il programma:

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

int main(){

FILE *fp;
int i;

fp = fopen("teston","r");

if(!fp){
printf("File non aperto!");
system("pause");
return 1;
}

printf("Posizione:%d", ftell(fp));

fscanf(fp,"%d",&i);
printf("\nLetto:%d\nPosizione:%d", i, ftell(fp));
fclose(fp);
system("pause");
return 0;
}

15 Risposte

  • Re: Segnalazione errore di Windows?!?

    Hai controllato che il file esista e sia stato regolarmente aperto?

    Per farlo controlla il valore di fp dopo la fopen.
  • Re: Segnalazione errore di Windows?!?

    Ho aggiunto :

    if(!fp)
    printf("File non aperto!");

    E me lo ha stampato, ma non capisco...
    Perchè non lo apre? Il file esiste(Lo fatto io e ciò scritto 19). Inoltre la segnalazione errori è sparita, forse perchè sto usando un'altro computer... Però mi stampa la posizione del cursore e mi dice -1 sia prima che dopo e la fscanf mi restituisce un numero assurdo!
  • Re: Segnalazione errore di Windows?!?

    Se il file non esiste o non può essere aperto tutto il resto del programma non può lavorare correttamente. Quindi, se hai avuto un errore in apertura del file, il programma deve essere terminato e non deve continuare (altrimenti quello che avrai sarà un crash o valori assurdi).

    Probabilmente il programma cerca il file in una cartella e tu l'hai inserito in un'altra cartella.
  • Re: Segnalazione errore di Windows?!?

    Va bene il discorso dell'uscire( e lho aggiunto).
    Ma, (uscendo dal problema specifico), mi hanno spiegato che il programma cerca i file nella sua directory dove lavora. Cosa significa? Che per essere sicuro che vada tutto bene il file deve essere nella cartella insieme al codice (cosa che è) o che nella fopen io devo dire tutto il percorso per arrivare al file?
    Per esempio:
    fopen("C:\Users\utente\Documents\C\teston","r");
    In sintesi la mia domanda è, il programma dove cerca i file?
    Grazie mille per l'aiuto che mi stai dando!
  • Re: Segnalazione errore di Windows?!?

    Significa che, se indichi il nome del file senza alcun percorso, questo deve stare nella stessa cartella in cui c'è l'eseguibile.

    Altrimenti devi indicare tutto il percorso completo.
  • Re: Segnalazione errore di Windows?!?

    E come si spiega che il file è nella stessa cartella ma non lo apre lo stesso?
    Ho anche provato a dichiarare l'intero percorso ma mi da una sfilza di errori che non capisco come unknow sequence escape...
    Come mai?
  • Re: Segnalazione errore di Windows?!?

    Platone 2.0 ha scritto:


    E come si spiega che il file è nella stessa cartella ma non lo apre lo stesso?
    Sicuro?

    Che compilatore usi?

    Il file si chiama proprio in quel modo oppure si chiama

    teston.txt

    ?
    Ho anche provato a dichiarare l'intero percorso ma mi da una sfilza di errori che non capisco come unknow sequence escape...
    Basterebbe che tu cercassi cosa è una "escape sequence" per risolvere ... in ogni caso, la barra \ all'interno di una costante stringa deve essere raddoppiata ...

    fopen("C:\\Users\\utente\\Documents\\C\\teston","r");
  • Re: Segnalazione errore di Windows?!?

    L'eseguibile non è nel progetto,anche se senza sapere il compilatore che usi rispondere diventa difficile.
    Comunque se il progetto l'hai in:
    "c:\progetti\ciaomondo\"
    generalmente il compilatore creerà per l'eseguibile due cartelle per il debug e per la release a seconda di come compili:
    "c:\progetti\ciaomondo\bin\debug\"
    "c:\progetti\ciaomondo\bin\release\"
    il file va li a seconda della modalità di compilazione.
  • Re: Segnalazione errore di Windows?!?

    vbextreme ha scritto:


    generalmente
    Non è detto ... ad esempio, DevC++ e il suo compilatore non creano cartelle Debug e Release.

    Ecco perché ho chiesto il compilatore usato.
  • Re: Segnalazione errore di Windows?!?

    Ma se usa dev-cpp allora è già a un passo dal baratro!.
    cmq è dev che non le crea il compilatore in questo caso non centra piu di tanto.
    Scaricati code::blocks!stesso compliatore ma ide decisamente meglio!
    cmq dipende anche in che modo viene eseguito il programma,se ad esempio in c::b quando clicchi su play il path di base potrebbe essere diverso.
    Rimane comunque configurabile in project->properties...
  • Re: Segnalazione errore di Windows?!?

    vbextreme ha scritto:


    ma se usa dev-cpp allora è già a un passo dal baratro!.
    cmq è dev che non le crea il compilatore in questo caso non centra piu di tanto.
    Scaricati code::blocks!
    Ehmmm, veramente io uso proprio dev c++...
    Dicono tutti che fa schifo ma sinceramente non so il perché...

    Comunque grazie per avermi spiegato la sintassi corretta per inserire il percorso nella fopen!

    oregon ha scritto:


    Sicuro?

    Che compilatore usi?

    Il file si chiama proprio in quel modo oppure si chiama

    teston.txt

    ?
    SI! Sono sicuro che sono nella stessa cartella.
    Non avevo detto che subito che usavo DevC++ perché non credevo fosse importante, comunque ho provato ad inserire teston.txt eeeeeeeeeee, LO APRE!!
    Ma al di là della gioiosa situazione, perché diavolo bisogna aggiungere .txt se non compare nel nome del file?!?!
  • Re: Segnalazione errore di Windows?!?

    Ma non ti compare probabilmente perché Explorer non ti fa vedere le estensioni conosciute (è una impostazione che puoi cambiare con le opzioni).

    Ma tu dovresti sapere quale nome hai dato al file !
  • Re: Segnalazione errore di Windows?!?

    Si, ma non pensavo fosse necessario anche il .txt...
    Comnq grazie mille per l'aiuto che mi avete dato!!
    Per quanto riguarda l'argomento, si deve togliere o basta lasciarlo così?
    Nel senso: in alcuni forum quando l'argomento è esaurito si posta un messaggio con scritto FINITO e poi passa uno che lo toglie.
    Qui è così?
  • Re: Segnalazione errore di Windows?!?

    Platone 2.0 ha scritto:


    Si, ma non pensavo fosse necessario anche il .txt...

    Qui è così?
    No ...
Devi accedere o registrarti per scrivere nel forum
15 risposte