WriteFile help
-
Ok I have no idea what I am doing wrong here: #include void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testing.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, NULL,&byte, 0); CloseHandle(hFile); } I am trying to create a file with text like "test". But it will not seem to write the text. It creates the file, but it won't write test. -Ryan M.
-
Ok I have no idea what I am doing wrong here: #include void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testing.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, NULL,&byte, 0); CloseHandle(hFile); } I am trying to create a file with text like "test". But it will not seem to write the text. It creates the file, but it won't write test. -Ryan M.
Look at the parameters to
WriteFile()
, specifically the 3rd one. It'snNumberOfBytesToWrite
. You're passingNULL
, which is defined as 0, so you're saying write zero bytes, which is exactly what happens. --Mike-- Personal stuff:: Ericahist | Homepage Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ ---- Actual sign at the laundromat I go to: "No tinting or dying." -
Ok I have no idea what I am doing wrong here: #include void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testing.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, NULL,&byte, 0); CloseHandle(hFile); } I am trying to create a file with text like "test". But it will not seem to write the text. It creates the file, but it won't write test. -Ryan M.
ok i got it. thanks. I am an idiot for using NULL. I am still learning C++. I know vb much better ;) void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testin.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, 10,&byte, 0); CloseHandle(hFile); } -Ryan M.
-
ok i got it. thanks. I am an idiot for using NULL. I am still learning C++. I know vb much better ;) void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testin.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, 10,&byte, 0); CloseHandle(hFile); } -Ryan M.
You're still not passing the right number. Your source buffer is a string, which is 5 bytes long (4 letters plus the terminating 0). You're saying write 10 bytes, which makes WriteFile() read off the end of your string. This may crash, or if not it's writing random bytes to the file. Here's the preferred way:
BOOL bSuccess = WriteFile ( hFile, buffer, strlen(buffer), &byte, NULL );
Notice I'm checking the return value too ;) --Mike-- Personal stuff:: Ericahist | Homepage Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ ---- Actual sign at the laundromat I go to: "No tinting or dying."
-
You're still not passing the right number. Your source buffer is a string, which is 5 bytes long (4 letters plus the terminating 0). You're saying write 10 bytes, which makes WriteFile() read off the end of your string. This may crash, or if not it's writing random bytes to the file. Here's the preferred way:
BOOL bSuccess = WriteFile ( hFile, buffer, strlen(buffer), &byte, NULL );
Notice I'm checking the return value too ;) --Mike-- Personal stuff:: Ericahist | Homepage Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ ---- Actual sign at the laundromat I go to: "No tinting or dying."
thank you so much! I will remember that next time :) -Ryan M.
-
ok i got it. thanks. I am an idiot for using NULL. I am still learning C++. I know vb much better ;) void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testin.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, 10,&byte, 0); CloseHandle(hFile); } -Ryan M.
-
ok i got it. thanks. I am an idiot for using NULL. I am still learning C++. I know vb much better ;) void main() { const char* buffer = "test"; DWORD byte; HANDLE hFile = CreateFile("C:\\testin.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(hFile, buffer, 10,&byte, 0); CloseHandle(hFile); } -Ryan M.
Ryan 1) I'd be a bit worried about the result if you used '10' as the size of the string as shown in your code ... you could crash the program, since you appear to be writing more characters than you have in the buffer .. 2) I'd use "test\0" to init the buffer and 3) strlen(buffer) as the 3rd argument for the WriteFile 'G'
-
Ryan 1) I'd be a bit worried about the result if you used '10' as the size of the string as shown in your code ... you could crash the program, since you appear to be writing more characters than you have in the buffer .. 2) I'd use "test\0" to init the buffer and 3) strlen(buffer) as the 3rd argument for the WriteFile 'G'
I didnt realise Michael Dunn had already corrected your use of the '10' .. didnt see his post first time round sorry all 'G'