繁体   English   中英

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

[英]Reading integers from a text file in C line by line and storing them in an array

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

非常感谢你提前!

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

字面意思是你问题的左边

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

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

简单的EG

#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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM