#include <stdio.h>

#define buffer_size 10000


main(int argc ,char *argv[])
{
FILE *p,*q;
char buffer[buffer_size];

p=fopen(argv[1],"r");

if(p){

while(fgets(buffer,buffer_size,p)){

printf("%s",buffer); } }
fclose(p);
q=fopen(argv[1],"w");
if(!q){
printf("文字列を書き込んでください\n");
gets(buffer);
fprintf(q,buffer);};

fclose(q);
}
ファイルを読み込めばすれど、書き込めません。
どの箇所が間違っているのでしょうか。