请问?怎么从文件中读入下面数据

请教?如何从文件中读入下面数据?

文件中有10个以内的数(具体不确定)
如:12 33 45 0 16 34 
怎么通过文件来读入到程序中 代码怎么写? 

一个是这种办法:
FILE *fp,*f;
 int aa[10]={0},i,cha,j;
fp=fopen("kp1.txt","r");
f=fopen("kp2.txt","w");
for(i=0;i<10;i++)
{fscanf(fp,"%d",&aa[i]);}
  printf("原数据:"); 
  for(i=0;i<10;i++)
  printf("%d ",aa[i]);
这种方法会把后面没有赋值的0也都输出为:12 33 45 0 16 34 0 0 0 0应该怎么修改才能去掉后面多余的未赋值的部分??? 

还有一种 我想先把12 33 45 62 16 34 
以字符形式接收 然后再转化成数字 但在接收时用fscanf(fp,"%s",a);只能接收到第一个空格 请教:怎么修改???
 


------解决方案--------------------
for(i=0;!feof(fp)&&i<10;i++)
{fscanf(fp,"%d",&aa[i]);}
------解决方案--------------------
请检查fscanf的返回值。
------解决方案--------------------
C/C++ code
    for(i=0;i<10;i++)
    {
        if((fscanf(fp,"%d",&aa[i])) == -1)
            break;
    }
    printf("原数据:");  
    for(j=0;j<i;j++)
        printf("%d ",aa[j]);

------解决方案--------------------
探讨
谢谢二位,如果想用字符串去接收12 33 45 0 16 34 该怎么办呢?