2015-03-05 2 views
-1
#include <stdio.h> 
#include <stdlib.h> 


struct urunler { 
    int kod; 
    char Ad[16]; 
    int stok; 
    float fiyat; 
}; 

void urunTara(struct urunler* inputs,int *amount); 

int main() 
{ 
    struct urunler Urun[50]; 
    int amount = 0; 



    urunTara(Urun,&amount); 
} 

void urunTara(struct urunler *inputs,int *amount){ 
    char Temp[150]; 
    FILE *fPtr; 
    fPtr = fopen("urunler.txt","r"); 
    if(fPtr == NULL){ 
     printf("File not found!"); 
    } else { 
     while(!feof(fPtr)){ 
      fgets(Temp,100,fPtr); 
      sscanf(Temp,"%d %s %d %f",&(inputs[*amount].kod),inputs[*amount].Ad,&(inputs[*amount].stok),&(inputs[*amount].fiyat)); 
      *amount++; 
     } 
    } 

}; 

Я относительно новичок в C и только начал изучать структуры. Текстовый файл содержит следующие данные:инструкция sscanf останавливает программу

25 televizyon 1000 150.25 
40 video 500 25.45 
50 plazma 75 2300.50 
76 dvd 20000 90.00 
85 supurge 700 110.75 
90 buzluk 250 10.00 
95 teyp 1250 8.99 

Проблема у меня есть с sscanf. Когда я делаю все это внутри основной функции, он отлично работает. Однако, когда я пытаюсь сделать это в функции urunTara, что-то не так с оператором sscanf, и программа перестает работать. Я успешно передал значения & (входы [* amount] .kod) и другие адреса с помощью scanf. Но не могу понять, в чем проблема с этим оператором sscanf.

ответ

1
*amount++; 

похож на

*(amount++); 

что означает разыменовать amount, а затем увеличить amount к элементу после этого.
Это неверно.

Изменить *amount++; к (*amount)++;, что увеличит его разыменованное значение.

См this и this для получения более подробной информации

+0

И вот я думал, что проблема была с sscanf. Спасибо огромное! – Eclipse

Смежные вопросы