怎么将文件中的多行字符串读入到一个二维数组中?

求助:如何将文件中的多行字符串读入到一个二维数组中????
在1.txt这个文件中有这样三行数据:
asdf a
dfe de d
de i am
利用下面的程序想将其读入到一个二维数组中,可在输出时a[1][5]应该是a字符,可是输出什么也没有,不知道哪里错了,请指教!?
#include <stdio.h>
#include <stdlib.h>
int main()
{FILE *f1,*f2;
 char a[101][31]={0};
 int i,j,x,num=0,sum=0;
 f1=fopen("1.txt","r");
 f2=fopen("2.txt","w");
 for(i=1;i<101;i++)
 {fscanf(f1,"%s",a[i]);
  if(feof(f1)==EOF)
  break;}
 for(i=1;i<6;i++)
  printf("%c",a[1][i]); 
 fclose(f1);
 fclose(f2);
getch();
}


------解决方案--------------------
fscanf(f1,"%s",a[i])遇到空格就停止了,读取一行要用fgets。
C/C++ code

#include <stdio.h>
#include <stdlib.h>
int main()
{FILE *f1,*f2;
 char a[101][31]={0};
 int i,j,x,num=0,sum=0;
 f1=fopen("1.txt","rt");
 f2=fopen("2.txt","wt");
 for(i=1;i<101;i++)
 {//fscanf(f1,"%s",a[i]);
  fgets(a[i], 30, f1);
  if(feof(f1)==EOF)
  break;}
 for(i=0;i<6;i++)
  printf("%c",a[1][i]); 
 fclose(f1);
 fclose(f2);
getch();
}

------解决方案--------------------
读取一行要用fgets,遇到\n结束
用fscanf逐个读单词,遇到制表符、空格或者换行符结束