제 코드에 약간의 문제가 있습니다. 컴파일러는 내 코드가 캐스트없이 정수에 대한 포인터를 만들고 있음을 알려줍니다. 이제 나는 이것이 무엇을 의미하는지 잘 모르겠다. 그래서 누군가가 나를 올바른 방향으로 향하게 할 수있을 것이다. 또한 일반적인 팁을 많이 주시면 감사하겠습니다!은 캐스트없이 정수를 가리키는 포인터를 만듭니다.
정확한 오류는 다음과 같습니다
Homework3.c: In function ‘main’:
Homework3.c:32: warning: passing argument 1 of ‘add’ makes pointer from integer without a cast
Homework3.c:16: note: expected ‘int (*)[5]’ but argument is of type ‘int’
#include <stdio.h>
#include <stdlib.h>
#define INPUT_FILE_NAME "amounts.txt"
#define PRODUCTS 5
#define SALESPERSON 4
#define AMOUNT 1449
#define TOTALS 20
void printOut(int [SALESPERSON][PRODUCTS], float [TOTALS]);
float add(int [SALESPERSON][PRODUCTS], float, float [TOTALS]);
int main(void){
FILE *inputFile;
int sales[SALESPERSON][PRODUCTS];
float data = 0.0;
float totals[TOTALS];
int count;
inputFile = fopen(INPUT_FILE_NAME, "r");
for (count = 0; count < AMOUNT; count++){
fscanf(inputFile, "%d", sales[SALESPERSON]);
fscanf(inputFile, "%d", sales[SALESPERSON][PRODUCTS]);
fscanf(inputFile, "%f", &data);
add(sales[SALESPERSON][PRODUCTS], data, totals[TOTALS]);
}
fclose(inputFile);
printOut(sales[SALESPERSON][PRODUCTS], totals[TOTALS]);
return 0;
}
void printOut(sales[SALESPERSON][PRODUCTS], totals[TOTALS]){
int count2 = 0;
int count3 = 0;
int count4 = 0;
for(count2 = 0; count2 < SALESPERSON; count2++){
for(count3 = 0; count3 < PRODUCTS; count3++){
printf("Sales Person %d \t Product%d \t Total: %.2f\n", count2, count3, totals[count4]);
++count4;
}
}
return ;
}
void add(sales[SALESPERSON][PRODUCTS], data, totals[TOTALS]){
if(sales[SALESPERSON] == 1){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[0] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[1] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[2] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[3] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[4] += data;
}
}
else if(sales[SALESPERSON] == 2){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[5] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[6] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[7] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[8] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[9] += data;
}
}
else if(sales[SALESPERSON] == 3){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[10] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[11] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[12] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[13] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[14] += data;
}
}
else if(sales[SALESPERSON] == 4){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[15] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[16] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[17] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[18] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[19] += data;
}
}
}
때를 그것을 컴파일하십시오. –
더 많은 오류가 있습니다. 나는 내 전체 코드를 수행하는 사람들이 저에게 오류를 수정하는 데 도움이 필요하기를 원합니다. 하하 – TheMadHouse
전체 배열을 첫 번째 인수로 사용하기 위해'add'를 정의했지만, 하나의 요소 만 전달하면됩니다. 배열의 범위 밖에있다 - 또 다른 문제). –