#include <stdio.h>
#define buffer_size 10000

main(char *argv[])
{
char str[1000];
FILE *p;
char buffer[10000];

p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer);
}
}

if(!p){

p=fopen(argv[1],"w");
printf("ファイルに何か書き込んでください。\n");
while(fputs(buffer,p)!=-1);
}

fclose(p);
}

コマンドラインでmain.exe test.txtとすればtest.txt を読み込み or に書き込むプログラムを作りたいのですが、間違いを指摘してください。
main関数の引数は利用します。よろしくお願いします。