为什么从命令行(argc)取得的字符串长度不能大于4?该如何处理

为什么从命令行(argc)取得的字符串长度不能大于4?
一个简单的从命令行得到数据并写入文本的程序!
int   main(int   argc,CHAR*   argv[])
{
HANDLE   hfile;
DWORD   num;
hfile=CreateFile( "test.txt ",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
for(int   i=1;i <sizeof(argv);i++)
{
WriteFile(hfile,argv[i],sizeof(argv[i]),&num,NULL);
WriteFile(hfile, "\n ",sizeof( "\n "),&num,NULL);
}
CloseHandle(hfile);
return   0;
}
可以得到多个命令,但是每个都不能超过4个字符长度!哪里的问题呢?
还有哦我VC刚开始学,字符串连接,怎么搞呀!本来想在argv[i]加个 "\n ",用+号好像不行!搞不懂了!

------解决方案--------------------
for(int i=1;i <argc;i++)
{
WriteFile(hfile,argv[i],strlen(argv[i]),&num,NULL);
WriteFile(hfile, "\n ",sizeof( "\n "),&num,NULL);
}

sizeof计算指针的长度时,为4

------解决方案--------------------
用这个int argc循环
------解决方案--------------------
argv[i]?
这个是指针哦
sizeof(argv[i])当然也就总是4了;
取字符长度用
strlen(argv[i])