Hi,
I am in the early stages of learning C (previously coded in java, PHP etc.).
The code below is a simple menu which enables you to:
create, delete, open and close a file.
The problem i have is if you choose to create the file, then open it, it is then not possible to delete it (gives error 32).
If you delete without opening it works fine or if you restart the program and then delete the file that was created in the last run it is also ok. Just seems you cant create, open and delete in same operation.
Any input would be helpful.
Thanks,Code:// for Win Xp Pro #define _WIN32_WINNT 0x0501 #include <windows.h> #include <stdio.h> int main() { HANDLE hFile; char fname[30] = "C:\\testfile.txt"; int menuOption; do { printf("\n"); printf("0) Exit\n"); printf("1) Close File\n"); printf("2) Delete File\n"); printf("3) Create File\n"); printf("4) Open File\n"); scanf("%d", &menuOption); switch(menuOption) { case 0 : break; case 1 : //close option if(CloseHandle(hFile) != 0) printf("CloseHandle() succeeded!\n"); else printf("CloseHandle() failed!\n"); break; case 2 : //delete option if(CloseHandle(hFile) != 0) printf("CloseHandle() succeeded!\n"); else printf("%s could not be closed! error %u\n", fname, GetLastError()); if(DeleteFile(fname) != 0) printf("%s file successfully deleted!\n", fname); else printf("%s could not be deleted! error %u\n", fname, GetLastError()); break; case 3 : //create option hFile = CreateFile(fname, // file to be opened GENERIC_WRITE, // open for writing FILE_SHARE_WRITE, // share for writing NULL, // default security CREATE_NEW, // create new file only FILE_ATTRIBUTE_NORMAL |FILE_ATTRIBUTE_ARCHIVE | SECURITY_IMPERSONATION, // normal file archive and impersonate client NULL); // no attribute template if(hFile == INVALID_HANDLE_VALUE) printf("Could not create %s file, error %u.\n", fname, GetLastError()); else printf("%s file created successfully, error if any, %u.\n", fname, GetLastError()); break; case 4 : //open option hFile = CreateFile(fname, // file to create GENERIC_WRITE, // open for writing FILE_SHARE_WRITE, // allow write share NULL, // default security OPEN_EXISTING, // opens a file FILE_ATTRIBUTE_NORMAL |FILE_ATTRIBUTE_ARCHIVE | SECURITY_IMPERSONATION, NULL); // no attribute template if(hFile == INVALID_HANDLE_VALUE) printf("Could not open %s file, error %u.\n", fname, GetLastError()); else printf("%s file opened successfully, error if any, %u.\n", fname, GetLastError()); break; default : //error message printf("Sorry but %d is not a valid option!", menuOption); break; } } while (menuOption !=0); return 0; }
Gid



LinkBack URL
About LinkBacks



).