Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] aprire un file

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    [C] aprire un file

    Salve a tutti,
    mi trovo di fronte a questo stranissimo problema, voglio prendere dei dati da un file .txt, ho isolato il codice che mi crea il problema:

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


    int main(){
    FILE *finp;
    char stringa[40];
    finp =fopen("punctin.txt", "r");
    if(finp != NULL){
    fscanf(finp,"%s",stringa);
    printf("\n%s",stringa);
    fclose(finp);
    }
    printf("\nFINITO!!");
    getchar();
    return 0;
    }

    il problema è che se lancio, dopo aver compilato, il programma DA DEV-C++, il programma non riesce a trovare il file di testo, mentre se lo lancio cliccando sull'eseguibile, non ci sono problemi.
    PERCHE'???

    c'è qualcosa di sbagliato?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se dai il percorso è meglio
    fopen("C:\\yourdir\\punctin.txt", "r");

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    SIII!!
    funzica!!

    ma c'è un modo per passare un path relativo?
    io so solo che l'eseguibile sarà nella stessa cartella del file di testo.

    come faccio?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  4. #4
    il patch relativo
    lo passi come fai in DOS (.\ ..\)
    ma devi raddoppiare i backslash (.\\ ..\\)
    altrimenti i caratteri che seguono il backslash (..\dir....)
    vengono interpretati dal compilatore come caratteri di escape.
    ...Terrible warlords, good warlords, and an english song

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    forse non hai ben inteso,
    il problema non è come scrivere un path relativo, il problema è conoscere la directory del programma.

    vedi, io facevo così:

    finp =fopen("punctin.txt", "r");

    convinto che venisse interpretato come "apri il file punctin.txt presente nella directory corrente", in realtà è così solo se lancio l'eseguibile cliccando sull'eseguibile.
    se lo lancio da qualche altro programma (o dal compilatore stesso) il file punctin.txt non viene trovato.
    Se invece metto il path assoluto sì.
    (Ti ricordo che lavoro con DEV-C++ su WinXp)

    Il problema è che io non so a priori il path assoluto dell'eseguibile, so solo che il file punctin.txt starà nella stessa cartella dell'eseguibile.
    chiaro?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    up
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  7. #7
    E` probabile che Dev-C++ per eseguire un programma dal suo interno esegua uno script (ad esempio un .bat) che non necessariamente si trova nella stessa directory dell`eseguibile o un qualche comando interno che cmq agisce considerando un`altra directory di lavoro. Magari e` un comportamento che puoi modificare sbirciando fra le opzioni, ma in fondo e` un problema che ti da` Dev-C++, visto che il programma e` corretto. Insomma, non c`e` da preoccuparsi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    ....ma....all'inizio non mi preoccupavo tanto nemmeno io, però
    ho visto che il problema non riguarda solo Dev-C++.
    Ho provato a lanciare l'eseguibile anche con il VBA di Excel (la mia intenzione finale), ma il risultato è lo stesso!!!
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

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.