2013-05-28 204 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; 
} 
相关问题