2014-11-15 39 views
-2

所以我用C創建了一個動態數組。該數組只包含數字。如何掃描我創建的1D數組以打印出數組中最後一個數字的數量?我創建了只掃描文件的代碼,如下所示:從數組中掃描數字

#include <stdio.h> 
#include <limits.h> 
int process(FILE *f) { 

int a, b; 
static int total = 1;      

if (f == 0) return 0; 
if (fscanf(f, "%d", &a) != 1) return INT_MIN; 
if ((b= check_file (f)) == INT_MIN) return a; 
if (a > b) 
{total++; return printf("%d > %d and total now is %d\n", a, b, total), a; } 
return b; 
} 
int main(void) { 
    FILE *fp= fopen("xxx.txt", "r"); 
    process(fp); 
    fclose(fp); 

    return 0; 
} 

我可以對數組進行相同操作嗎?我怎樣才能做到這一點?我應該使用哪些命令?

動態數組:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int t_size; 

    FILE * fp;                   
     fp = fopen ("xxx.txt", "r"); 

     fscanf(fp, "%d", &t_size); 
     printf("Create a size of %d array\n", t_size); 

     int* my_array = NULL; 
     my_array = malloc(t_size*sizeof(*my_array)); 

     if (my_array==NULL) { 
     printf("Error allocating memory!\n"); //print an error message 
     return 1; //return with failure 
     getchar(); 
     } 
     int i =0; 
     for (i = 0; i < t_size; i++) 
     { 
     fscanf(fp, "%d",&my_array[i]); 
     } 

     //if all is working smoothly... 
     printf("All up and running! Array created! :D\n"); 
     for(i = 0; i < t_size; i++) 
     { 
     printf(" %d : %d\n", i, my_array[i]); 
     } 
     getchar(); 

     free(my_array); 
} 
+2

我逆轉了你的編輯。一旦你解決了問題,請不要刪除你的問題的內容。這對社區不利。考慮接受一個答案,或者自己寫一個答案然後接受答案 - 只要做一些事情,向未來的讀者展示如何解決類似的問題。 –

+1

@ Bill:我很抱歉地說,但你可以考慮之前*隨時隨地*詢問網絡。 – usr2564301

回答

0

你必須:

  1. 從文件中添加的所有號碼數組(int arr[N],其中N是元素的個數)
  2. 找到數組中最後一個元素的值(arr[N-1]
  3. 遍歷數組並計數有多少個數更大最後一個。
+0

我建議從C語言的I/O課程開始,以及如何處理'int'數組。 – syntagma

0
#include <stdio.h> 
#include <limits.h> 

int process(int *array, int *endp) { 
    int a, b; 
    if (array == 0) return 0; 
    if (array == endp) return INT_MIN; 
    else a = *array++; 
    if ((b= process(array, endp)) == INT_MIN) return a; 
    if (a > b) return printf("%d > %d\n", a, b), a; 
    return b; 
} 
int main(void) { 
    int array[] = { 4, 3, 2, 1}; 
    int t_size = 4; 

    process(array, array + t_size); 

    return 0; 
} 
+0

@ Bill動態數組也是可行的。 – BLUEPIXY