【swu】 判断参数是否有效,参数替7个数字

【swu】 判断参数是否有效,参数为7个数字。
  1 #include <stdio.h>
  2
  3 int main ()
  4 {
  5         FILE *fp;
  6         int i, k, tmp, q;
  7         int num[7];
  8         fp = fopen("data.in","r");
  9         for (q=0;q<7;q++)
 10                 fscanf(fp, "%d", &num[q]);
 11         if(fp==NULL){
 12                 fprintf(stderr,"Can't open the file.\n");
 13                 return 1;
 14         }
 15         for(q=0; q<7; q++){
 16                 if(fscanf(fp, "%d", &num[i]) != 1){
 17                         fprintf(stderr,"Valid\n");
 18                         return 2;
 19                 }
                                 为什么这里总是输出Valid,我外面的data.in 文件里面只有7个数字,而且用了空格号隔
 20         }                                                   开了的。

 21         for(i=0; i<7; i++){
 22                 for(k=0; k<7-i-1; k++){
 23                         if(num[k]>num[k+1]){
 24                                 tmp = num[k+1];
 25                                 num[k+1] = num[k];
 26                                 num[k] = tmp;
 27                         }
 28                 }
 29         }
 30         for(q=0;q<7;q++)
 31                 printf("%d ",num[q]);
 32         printf("\n");
 33         return 0;
 34 }

------解决方案--------------------
引用:
  1 #include <stdio.h>
  2
  3 int main ()
  4 {
  5         FILE *fp;
  6         int i, k, tmp, q;
  7         int num[7];
  8         fp = fopen("data.in","r");
  9         for (q=0;q<7;q++)            你这里已经读过了,后面要再读,得先把文件指针回到文件头。
 10                 fscanf(fp, "%d", &num[q]);
 11         if(fp==NULL){
 12                 fprintf(stderr,"Can't open the file.\n");
 13                 return 1;
 14         }