入力された文字列をMallocで確保した部分にコピーしたいと思っていますがうまく出来ません。
どうしたらいいでのでしょうか?

char line[100],*linep,*word;
int x;

linep=line;
gets(line);
while (*linep != '\0'){
x=x+1;
linep=linep+1;
};
printf("%d",x);
linep=line;
word=(char *)malloc(x+2);
do{
*word = *linep;
word=word+1;
linep=linep+1;
}while(*linep != '\0');
printf("%s",word);
最初はlineのサイズをSizeofで取って、mallocで空間を作ってstrcpyでコピーしていましたが、
それだと配列の最大サイズを使ってしまうので、なんとかして入力された文字列ちょうどのサイズで
入力内容を受け取りたいです。どうかご教授願います。