我是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行的搜索,以便逐行完成读取和相应存储的值?
提前非常感谢你!
答案 0 :(得分:4)
之前已经回答了这个问题,我很确定在输入问题时会向您建议:
答案 1 :(得分:0)
我不打算给你一个代码示例,而是建议你可以做些什么来将文件的内容插入一个数组而不是一个。
尝试创建一个2D数组并为其分配值,而不是使用多个数组并使用FOR
循环来执行此操作。
答案 2 :(得分:0)
#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;
}