Я пытаюсь прочитать из файла, который имеет значения, разделенные запятыми, например так (5-е поле должно иметь только r / b / n, а 6-е поле это y / n:
531,A,10,10,b,n,96.00,100.00
531,B,15,15,b,n,144.00,0.00
531,C,20,20,b,n,192.00,0.00
533,A,11,11,r,n,123.20,100.00
533,B,22,22,r,n,246.40,0.00
У меня есть следующееБлок кода fscanf для анализа файла построчно и сохранения значений в массиве, который я изменяю / выводю позже.
while(fscanf(data, "%4[0-9],%[A-Z],%3[0-9],%3[0-9],[prb],[yn],%d,%d\n", &house[i], room[i], &length[i], &width[i], paintcode[i], ceilingcode[i], &cost[i], &setupcost[i]) != EOF) {
printf("%d,%c,%d,%d,%c,%c,%.2lf,%.2lf\n", &house[i], room[i], &length[i], &width[i], paintcode[i], ceilingcode[i], &cost[i], &setupcost[i]);
i++;
}
К сожалению, я получаю ошибку сегментации, и это происходит в этой строке. Я изменил ипроверил его около часа, и я почти уверен, что у меня все в порядке, если я что-то упустил. Любая помощь будет оценена, полная основная функция вставлена ниже.
main() {
FILE *data;
int house[200];
char room[200];
int length[200];
int width[200];
char paintcode[200];
char ceilingcode[200];
double cost[200];
double setupcost[200];
char line;
int MAX_BUFF = 200;
char x[200];
double price[100];
int i = 0, num_records = 0;
data = fopen("quotes.data","r");
if(data == NULL){
printf("Error: file can't be open..\n");
} else {
while(fscanf(data, "%4[0-9],%[A-Z],%3[0-9],%3[0-9],[prb],[yn],%d,%d\n", &house[i], room[i], &length[i], &width[i], paintcode[i], ceilingcode[i], &cost[i], &setupcost[i]) != EOF) {
printf("%d,%c,%d,%d,%c,%c,%.2lf,%.2lf\n", &house[i], room[i], &length[i], &width[i], paintcode[i], ceilingcode[i], &cost[i], &setupcost[i]);
i++;
}
fclose(data);