从C中的文本文件中逐行读取整数并将它们存储在数组中

时间:2013-05-28 05:56:56

标签: c arrays file

我是C的新手,现在已经尝试这样做了一段时间。

我需要从包含以下内容的文本文件中读取整数值:

G = 10

P = 5

Gayle: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行的搜索,以便逐行完成读取和相应存储的值?

提前非常感谢你!

3 个答案:

答案 0 :(得分:4)

之前已经回答了这个问题,我很确定在输入问题时会向您建议:

Literally to the left of your question

答案 1 :(得分:0)

我不打算给你一个代码示例,而是建议你可以做些什么来将文件的内容插入一个数组而不是一个。

尝试创建一个2D数组并为其分配值,而不是使用多个数组并使用FOR循环来执行此操作。

答案 2 :(得分: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;
}