sprintf eller andet alternativ
Når jeg bruger følgende kode i C (linux) får jeg en segmentation fault i i linierne hvor jeg bruger sprintf. Hvordan løses denne fejl, og hvorfor opstår den?int main()
{
...
start(1,login);
....
}
int start(int a, int login)
{
char *product, *productNrFile, *transactionFile;
int choice,size;
if(a=1)
{
if (login=1)
{
printf("\n****************************************\n");
printf("1: Køb varer\n");
printf("2: Sælg varer\n");
printf("3: Total Transaction\n");
printf("4: Total Value\n");
printf("5: Exit\n");
printf("Make your choice chief: ");
printf("\n****************************************\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Indtast varenummer:");
scanf("%s",product);
printf("Indtast antal:");
scanf("%d",&size);
sprintf(productNrFile,"%s.txt",product);
sprintf(transactionFile,"%st.txt",product);
buy(product,transactionFile,productNrFile, size, login);
again();
break;
case 2:
printf("Indtast varenummer:");
scanf("%s",product);
printf("Indtast antal:");
scanf("%d",&size);
sprintf(productNrFile,"%s.txt", product); //HER DRILLER DEN!!!!!!!!!!!
//sprintf(transactionFile,"%st.txt",product);
//printf("\nproductNrfile: %s\n",&productNrFile);
//printf("transactionfi: %s\n",transactionFile);
printf("product: %s\n",product);
printf("antal: %d\n",size);
//sale(product,transactionFile,productNrFile, size, login);
//again();
exit(0);
break;
case 3: printf("\n");
totalTransaction(login);
again();
break;
case 4: printf("\n");
totalValue(login);
again();
break;
case 5: exit(0);
default:
printf("Tast et gyldigt nummer!\n");
again();
}
}
else
{
printf("\n****************************************\n");
printf("1: Køb varer\n");
printf("2: Sælg varer\n");
printf("3: Exit\n");
printf("Make your choice worker: ");
printf("\n****************************************\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Indtast varenummer:");
scanf("%s",&product);
printf("Indtast antal:");
scanf("%d",&size);
sprintf(productNrFile,"%s.txt",product);
sprintf(transactionFile,"%st.txt",product);
buy(product,transactionFile,productNrFile, size, login);
again();
break;
case 2:
printf("Indtast varenummer:");
scanf("%s",&product);
printf("Indtast antal:");
scanf("%d",&size);
sprintf(productNrFile,"%s.txt",product);
sprintf(transactionFile,"%st.txt",product);
sale(product,transactionFile,productNrFile, size, login);
again();
break;
case 3: exit(0);
default:
printf("Tast et gyldigt nummer!\n");
again();
}
}
}
else
exit(0);
}