数値中のすべてのビットを左端までシフトする

問題:数値中のすべてのビットを左端までシフトする。例01010110は11110000。

#include <stdio.h>

int main(){
  int i;
  char c[100], result[100], one[100]="1";
  strcpy(result, "");

  fgets(c, sizeof(c), stdin);
  for(i=0; i<strlen(c); i++){
    if(c[i]=='0')
      strcat(result, "0");
    else if(c[i]=='1'){
      strcat(one, result);
      strcpy(result, one);
      strcpy(one, "1");
    }
  }
  printf("result = %s", result);
  return 0;
}

うーん。ビット演算の章の問題なんだけどこの解き方はなぁ。