함수에 전달하지 않을 때 이진 파일을 열고 읽는 데 문제가 없습니다. 그러나이 경우 함수에 전달하고 문제가 계속 발생합니다.함수에서 이진 파일 열기? 코드 참조 :
void fun1 (int amount,struct inventory a[],FILE *fp);
int main()
{
tag a[10];
int amount;
int i;
FILE *fp;
fp=fopen("e:\\invent.txt","wb");
printf("How many items do you want to enter? ");
scanf("%d",&amount);
for(i=1;i<=amount;i++)
{
printf("Enter the name of the item: ");
scanf("%s",a[i].name);
printf("Enter the unit amount the item has: ");
scanf("%d",&a[i].num);
printf("Enter the unit price for the item: ");
scanf("%f",&a[i].price);
fwrite(&a[i],sizeof(a[i]),amount,fp);
}
fclose(fp);
fun1(amount,a,fp);
}
^^ 이것은 나의 입력과 함수 호출을 ^^.
내 입력 :
얼마나 많은 항목을 입력 할 수 있습니까? 32
이 항목에 대한 단가 입력 :: 단위 량을 입력 손톱
11
는 항목의 이름을 입력 해머
항목 갖는 단위 량을 입력하여 2
는 항목의 이름을 입력 항목이 : 43
이 항목에 대한 단가를 입력 : 12
void fun1 (int amount,struct inventory a[],FILE *fp)
{
int i;
fp=fopen("e:\\invent.txt","rb");
while(fread(&a[amount],sizeof(tag),amount,fp) == amount)
{
printf("\nItem\tUnit #\tPrice\n");
for(i=1;i<=amount;i++)
{
printf("\n%s\t%d\t%.2f",a[i].name,a[i].num,a[i].price);
}
}
fclose(fp);
getchar();
}
^^ 내 기능 ^^
내 출력 :
항목 단위 # 가격
해머 (32) 11.00
해머 (32) 11.00
항목 단위 # 가격
해머 (32) 11.00
못 43 12.00
"해머"를 두 번 인쇄해서는 안됩니다. 오직 굵은 글씨 만 인쇄해야합니다. 당신이 나에게 링크를 줄 수 있거나 조언이 있다면 크게 감사 할 것입니다!
호기심에서 벗어난 이유는 무엇입니까? 'fp'를 함수에 전달하는 이유는 무엇입니까? 그것은'main'으로 닫히고'fun1'에서 재개 되었기 때문에'fun1'에서 지역 변수가 될 수도 있습니다. –
'main'에서'a '를'a [10]'으로 정의하지만'fun1'은'struct inventory' 배열을 원합니다. 어딘가에'typedef struct inventory tag'가 있다고 생각합니다. 오늘이 약간 혼란 스럽다면 몇 달 안에 어떻게 될지 생각해보십시오. 당신 자신을 위해 변수와 매개 변수의 유형과 일치해야합니다. –
내가하고있는 프로젝트에서 바이너리 파일이 필요하고 함수에 출력을 표시해야하기 때문에 fp를 함수에 전달하고있다. 나는 FILE I/O 전체에서 새로운 것이므로 나는이 일을 올바르게하고 있는지 확신합니다. – Shamrocck