|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - argv corrupted by long directory names
I'm passing arguments to the following Win32 console application:
C:\Documents and Settings\James\My Documents\My
Stuff\Development\Test.exe
When I use the debugger to test this, instead of *argv[0] containing the
above file spec it contains the characters leading up to the first space.
So,
*argv[0] == "C:\Documents"
*argv[1] == "and"
*argv[2] == "Settings\James\My Documents\My"
....
Anyone know a solution to this ?
James
Aug 09 2002
Have you tried putting it between quotes? This way of passing arguments is what Win32 does. A 'space' separates arguments... "C:\Documents and Settings\James\My Documents\My Stuff\Development\Test.exe" Jan James wrote: Aug 09 2002
I can't control what the first argument is and therefore can't put quotes around it. *argv[0] always contains the name and path of the executable. User supplied arguments start at *argv[1]. "Jan Knepper" <jan smartsoft.cc> wrote in message news:3D541F5E.218FE4C smartsoft.cc...Have you tried putting it between quotes? This way of passing arguments is what Win32 does. A 'space' separates arguments... "C:\Documents and Settings\James\My Documents\My Aug 09 2002
<g>
I guess you can not...
Sorry, I should have read better, I thought you were talking about > argv [ 0 ].
Anyways I tried the same thing and for me it seems to work just fine:
#include <stdio.h>
int main ( int argc, char **argv )
{
for ( int i = 0 ; i < argc ; i++ )
printf ( "'%s'\n", *( argv + i ) );
return ( 0 );
}
C:\Documents and Settings\JAK\Local Settings\Temp>test0149 test
'C:\Documents and Settings\JAK\Local Settings\Temp\Test0149.exe'
'test'
C:\Documents and Settings\JAK\Local Settings\Temp>test0149 test
'C:\Documents and Settings\JAK\Local Settings\Temp\Test0149.exe'
'test'
C:\Documents and Settings\JAK\Local Settings\Temp>cd\
C:\>"C:\Documents and Settings\JAK\Local Settings\Temp\Test0149.exe"
'C:\Documents and Settings\JAK\Local Settings\Temp\Test0149.exe'
C:\>
Are you sure you are targetting Win32?
Jan
James wrote:
Aug 09 2002
Jan I actually made a slight mistake in my original description of the problem. I'm passing 3 arguments to the IDDE Project->Arguments facility. Writing all arguments received to the screen (enclosed in <>), I get: argc is 9 arg 0 <C:\Documents and Settings\James\My Documents\My Stuff\Development\Work Areas\MODFLNM\modflnm.EXE> arg 1 <and> arg 2 <Settings\James\My> arg 3 <Documents\My> arg 4 <Stuff\Development\Work> arg 5 <Areas\MODFLNM\modflnm.EXE> arg 6 <music> arg 7 <wav> arg 8 <mp3> Running the same program from the command prompt, the output is: argc is 4 arg 0 <C:\Documents and Settings\James\My Documents\My Stuff\Development\Work Areas\MODFLNM\modflnm.EXE> arg 1 <music> arg 2 <wav> arg 3 <mp3> By the way, I'm running SCWMN32.EXE. James "Jan Knepper" <jan smartsoft.cc> wrote in message news:3D5443F5.FFA66FDF smartsoft.cc...<g> I guess you can not... Sorry, I should have read better, I thought you were talking about > argv Aug 09 2002
Thanks for the clarification. The IDDE doesn't handle spaces in path names in general. I hope to get this fixed in the future, but for now we're stuck with that. Sorry. "James" <ploppy.powell virgin.net> wrote in message news:aj1gp6$3el$1 digitaldaemon.com...Jan I actually made a slight mistake in my original description of the Aug 09 2002
You can try using this API call to get the command line: LPTSTR GetCommandLine(VOID); In article <aj0uke$2i46$1 digitaldaemon.com>, James says... Aug 09 2002
Thanks. I'm still at the very early stages of programming in this environment, so API calls are still a little advanced for me. I haven't started on c++ yet. Thats's why I'm using the Win32 console. "Keith Fuller" <Keith_member pathlink.com> wrote in message news:aj1gpr$3ep$1 digitaldaemon.com...You can try using this API call to get the command line: LPTSTR GetCommandLine(VOID); In article <aj0uke$2i46$1 digitaldaemon.com>, James says... Aug 09 2002
James wrote:I haven't started on c++ yet. Thats's why I'm using the Win32 console. Aug 09 2002
|