Почему это бросает ошибку сегментации? Я отлаживаю его и сузил его до назначения масс в инструкции switch, как я должен это делать?Почему это бросает ошибку сегментации?
Вот мой код:
#include <stdio.h>
#define MAX 100
struct cg {
int x, y, mass;
};
struct cg masses[MAX];
int numberOfEntries;
int readin(void) {
FILE *file;
int massesRead, i, num, partRead = 0;
file = fopen("WeightData.txt", "r");
if(file == NULL) {
printf("Error: can't open file.\n");
return 1;
} else {
while(fscanf(file, "%d", &num) > 0) {
switch(partRead){
case 0:
masses[i].x = num;
partRead++;
continue;
case 1:
masses[i].y = num;
partRead++;
continue;
case 2:
masses[i].mass = num;
massesRead++;
partRead = 0;
i++;
continue;
}
}
}
fclose(file);
numberOfEntries = massesRead;
return massesRead;
}
void computecg(int n_masses) {
int sum_of_xmass;
int sum_of_ymass;
int sum_of_mass;
for(int i=0; i< numberOfEntries; i++){
sum_of_xmass += (masses[i].x * masses[i].mass);
sum_of_ymass += (masses[i].y * masses[i].mass);
sum_of_mass += (masses[i].mass);
}
int cg_x = sum_of_xmass/sum_of_mass;
int cg_y = sum_of_ymass/sum_of_mass;
printf("X = %d Y = %d.",cg_x, cg_y);
}
int main() {
int number;
if((number = readin()) > 0){
computecg(number);
}
return numberOfEntries;
}
Вы разместили свой код, но вы не объяснили, что ваш код должен сделать точно. прочитайте, как спросить http://stackoverflow.com/help/how-to-ask И как создать минимальный, полный и проверенный пример http://stackoverflow.com/help/mcve. – davejal
Эта строка: 'void computecg (int n_masses) {' имеет параметр 'n_masses', но этот параметр не используется в этой функции. – user3629249
Эта строка: 'while (fscanf (файл,"% d ", & num)> 0) {' не соответствует правильному значению. (см. справочную страницу для fscanf()) строка должна быть: 'while (fscanf (файл,"% d ", & num) == 1) { – user3629249