2013-05-28 206 views
0

我是C新手,現在一直在嘗試做這件事。從C文本文件中逐行讀取整數並將它們存儲在一個數組中

我需要讀取從具有文本文件中的整數值:

G = 10

P = 5

蓋爾:1,2,3,4

價格:4,3,5,6.6

需要挑出Gayle和Price值並將它們存儲在2個獨立的數組中,並將G和P值存儲在2個單獨的變量中。

到目前爲止,我已經做了:

FILE* file = fopen(abc.txt, "r"); 
//for gayle values 
int g_array[100]; 
int i=0; 
int gayle_val; 
while(fscanf("%d", &gayle_val)==1) 
{ 
    g_array[i]=gayle_val; 
} 
//for price values 
int p_array[100]; 
int i=0; 
int price_val; 
while(fscanf("%d", &price_val)==1) 
{ 
    p_array[i]=price_val; 
} 
//for G and P values 

如何結合搜索的4線使得讀取由線完成並相應地進行存儲的值?

非常感謝你提前!

+0

價格樣本包括6.6。轉換爲'int'? – BLUEPIXY

回答

0

我不會給你一個代碼示例,而是會告訴你可以做些什麼來獲取文件的內容插入到一個數組而不是一個。

嘗試創建一個2D數組,而不是分配多個數組並使用FOR循環來完成此操作。

+0

事情是我必須在代碼的另一部分單獨使用值。所以將它們放入單個二維數組中會很有用? – user2272902

5

此之前已經回答了,我敢肯定有人建議你的問題是輸入:

Literally to the left of your question

0

簡單E.G.

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

int main(void){ 
    int gayle_val, g_array[100], g_count, p_count; 
    float price_val, p_array[100]; 
    int i; 
    char line_buff[128], *p; 
    FILE *file = fopen("abc.txt", "r"); 
    while(NULL!=fgets(line_buff, sizeof(line_buff), file)){ 
     if(strncmp("G = ", line_buff, 4) == 0){//simple match 
      gayle_val = atoi(line_buff + 4); 
     } else if(strncmp("P = ", line_buff, 4) == 0){ 
      price_val = atof(line_buff + 4); 
     } else if(strncmp("Gayle: ", line_buff, 7) == 0){ 
      g_count = 0; 
      for(p = line_buff + 7;NULL!=(p=strtok(p, ","));p=NULL){ 
       g_array[g_count++] = atoi(p); 
      } 
     } else if(strncmp("Price: ", line_buff, 7) == 0){ 
      p_count = 0; 
      for(p = line_buff + 7;NULL!=(p=strtok(p, ","));p=NULL){ 
       p_array[p_count++] = atof(p); 
      } 
     } 
    } 
    fclose(file); 

    //check print 
    printf("gayle_val: %d\n", gayle_val); 
    printf("gayle: "); 
    for(i = 0;i<g_count;++i) 
     printf("%d ", g_array[i]); 
    printf("\n"); 
    printf("price_val: %g\n", price_val); 
    printf("price: "); 
    for(i = 0;i<p_count;++i) 
     printf("%g ", p_array[i]); 
    printf("\n"); 

    return 0; 
} 
相關問題