0

d'un programme que je viens de faire un petit programme qui lit le nom d'un fichier glissé sur son icône et l'écrit dans un fichier texte de sortieC Programmation: Faites glisser-déposer un fichier sur l'icône

mais si je compile ce programme, se bloque lorsque j'essaie de faire glisser un fichier dessus. si je l'ouvre avec un double clic c'est ok; si je l'ouvre avec la ligne de commande et les paramètres c'est ok; mais si je viens de déposer un fichier sur le programme que j'ai compilé, il se bloque toujours et je ne sais pas pourquoi

juste essayer de compiler comme ceci:

#include <stdio.h> 

int main(int argc, char * argv[]) 
{ 
    FILE * File=fopen("file.txt", "w"); 
    fclose(File); 
    return 0; 
} 

si vous faites glisser & déposer un fichier simple, sur cette icône de programme, le programme se bloque

est-ce que quelqu'un sait pourquoi?

+0

Quel système d'exploitation? –

+0

Notez que sous Windows vous obtiendrez des résultats absurdes avec les chemins Unicode avec ce programme. – Joey

+0

hmm il se bloque même si je l'ouvre en lisant (fopen ("file.txt", "r");) et seulement si je fais glisser un fichier dessus. si je double-clique ça va bien et écrit les données .. c'est sacrément bizarre..pourquoi il devrait planter quand je le fais glisser et pas quand je double-cliquez dessus. le dossier est mon bureau, donc j'ai w privilèges - os: windows xp – Picio

Répondre

2

Vous faites probablement des suppositions sur le répertoire de travail actuel et ses autorisations lorsque votre exécutable s'exécute. Appeler fclose sur un FICHIER invalide * (par exemple, NULL) entraînera probablement un plantage. Vous devez vérifier que fopen réussit, par ex.

#include <stdio.h> 

int main(int argc, char * argv[]) 
{ 
    FILE * f = fopen("file.txt", "w"); 
    if (f != NULL) 
    { 
     // 
     // write stuff to file here if you want... 
     // 
     fclose(f); 
    } 
    return 0; 
} 
+0

@Picio: qui devrait être assez facile à vérifier. Changez la première ligne (du code original) en 'FILE * File = NULL;' et voyez si elle se bloque lorsque vous double-cliquez dessus. – paxdiablo

Questions connexes