2010-07-20 2 views
0

Je crée le fichier en utilisant la fonction Createfile. Le programme C fonctionne correctement mais je ne parviens pas à voir le fichier créé dans le dossier correspondant. L'option "Afficher les fichiers cachés" est également cochée.Fonction Createfile

+0

Il est très difficile d'obtenir cet effet dans MineSweeper. – leppie

+0

Montrez-nous le code! En dehors de Raymond Chen, le débogage psychique n'est pas un domaine d'activité bien développé. – paxdiablo

+0

S'il vous plaît montrer du code. – Philipp

Répondre

0

Vous pouvez vérifier si la fonction a fonctionné correctement en extrayant la valeur HANDLE retournée.

edit: Un programme C continue de fonctionner (de manière incorrecte) si une fonction échoue. Il est donc très important de vérifier chaque POIGNÉE retournée.

Modifier: Le HANDLE retourné ne doit pas être INVALID_HANDLE_VALUE. (Mais je peux imaginer que NULL n'est pas bon non plus).

+0

'CreateFile' ne retourne pas un' HRESULT'. – Philipp

+0

oui, la fonction fonctionne correctement seulement. J'ai vérifié les valeurs retournées (0). – Pradeep

+0

La fonctionnalité ressemble à: memset (fichier_message, 0x00, sizeof (cmdline)); Sprintf (fichier_de_messages, "D: \\ temp2 \\ a.txt") sprintf; fd = CreateFile (message_file, GENERIC_READ | GENERIC_WRITE \t \t \t \t \t \t FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, \t \t \t \t \t \t OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (fd == INVALID_HANDLE_VALUE) { return 1; } Après l'exécution de ci-dessus, j'ai vérifié le dossier D: \ temp2, aucun fichier n'existe dans le même. – Pradeep

0

Deux choses à vérifier. Premièrement, a-t-il réussi? De l'docs:

Valeur de retour
          Si la fonction réussit, la valeur de retour est un handle ouvert au fichier spécifié, périphérique, tube nommé, ou une fente de messagerie. Si la fonction échoue, la valeur de retour est INVALID_HANDLE_VALUE. Pour obtenir des informations d'erreur étendues, appelez le GetLastError.

Numéro deux, cherchez-vous au bon endroit. Souvent, les personnes qui exécutent leur code depuis un IDE ne réalisent pas que leur répertoire de travail actuel n'est pas toujours ce qu'elles pensent être. Vous pouvez system("cd"); ou quelque chose de similaire pour voir ce que c'est réellement. Ou, vous pouvez utiliser des noms de chemins absolus pour vous assurer que le fichier est créé au bon endroit (pour le test, vous devez jamais utiliser des chemins absolus pour le code de production).

Si aucune de ces deux suggestions ne vous aide, vous devriez publier le code qui montre le problème particulier. De préférence assez pour que nous ne devions pas revenir et demander plus.

Questions connexes