1

私は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行の検索を組み合わせるにはどうすればよいですか?

よろしくお願いします!

4

3 に答える 3

0

シンプル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;
}
于 2013-05-28T08:11:33.237 に答える
0

コード サンプルを提供するつもりはありませんが、代わりに、ファイルの内容を 1 つではなく 1 つの配列に挿入するために何ができるかをアドバイスします。

複数の配列を持つのではなく、代わりに 2D 配列を作成してそれに値を割り当て、FORループを使用してください。

于 2013-05-28T06:01:40.447 に答える