Я пытаюсь создать программу на языке C, которая может принимать информацию о сотрудниках в форме массива (не параллельной) и выводить ее в текстовый файл. Программа будет сравнивать код задания и рассчитать комиссионные за сотрудника. У меня есть 2 вопроса:C Язык - печать массива в текстовый файл
1 - комиссия продавцаПерсона всегда 0, даже когда я вхожу в один из TEL, SAL, SSR. Это проблема с моим сопоставлением строк?
2 - как я могу выводить результаты в текстовый файл (внутри папки проекта)?
Редактировать - Я понял, как напечатать мой файл в txt. Спасибо за вашу помощь!
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
//job codes
char TEL[4] = "TEL";
char SAL[4] = "SAL";
char SSR[4] = "SSR";
//create a sales person structure
struct salesPerson
{
char name[31];
int salesID;
char jobCode[4];
double totalSales;
double commission;
}e[10]; //make an array of 10 employees
int _tmain(int argc, _TCHAR* argv[])
{
//get employee info
for(int i=0; i<3; i++)
{
printf("\nEnter the sales person's name: ");
scanf(" %s", &e[i].name);
printf("\nEnter the sales person's ID: \n");
scanf(" %d%*c", &e[i].salesID);
printf("\nEnter the sales person's job code: \n");
scanf(" %s", &e[i].jobCode);
printf("\nEnter the total sales of the sales person: ");
scanf(" %lf", &e[i].totalSales);
//determine commission based on jobCode
if(strcmp(e[i].jobCode, TEL) == 0)
{
e[i].commission = e[i].totalSales*0.02;
}
if(strcmp(e[i].jobCode, SAL) == 0)
{
e[i].commission = e[i].totalSales*0.05;
}
if(strcmp(e[i].jobCode, SSR) == 0)
{
e[i].commission = e[i].totalSales*0.07;
}
else
{
printf("\n----------");
}
}
printf("\n%d\n", e[0].commission);
printf("\n%d\n", e[1].commission);
printf("\n%d\n", e[2].commission);
//print stuff to txt file
FILE *fpOut, *fpIn;
/*
if ((fpIn = fopen("c:\\temp\\salesEmployees.txt", "w")) == NULL)
{
printf("Error opening the file for processing\n\n");
}
else
{
fpOut = fopen("c:\\temp\\salesEmployees.txt", "w");
for(int i=0; i<3; i++)
{
//fscanf(fpIn,"%[^\n]", &e[i].name);
//fscanf(fpIn,"%f%*c", &e[i].salesID);
fprintf(fpOut, "\nName: %s", e[i].name);
fprintf(fpOut, "\nSalesID: %d*c ", e[i].salesID);
fprintf(fpOut, "\nJob code: %s ", e[i].jobCode);
fprintf(fpOut, "\nTotal sales: %.2lf", e[i].totalSales);
fprintf(fpOut, "\nCommission earned: %.2lf", e[i].commission);
fprintf(fpOut, "\n\n");
}
//fclose(fpOut);
}*/
}
Сравнение строк для комиссии выглядит правильно - но вы, вероятно, должны использовать 'else if', чтобы при выводе правильного значения вы прекратили проверку, что также предотвратит его приращение" \ n ------ ----». –
Ваш прокомментированный код выглядит как хороший старт при выводе в txt-файл. В чем проблема, с которой вы столкнулись? –
Я прокомментировал код для печати на txt, потому что он сбой моей программы, я не понял, как это исправить. Кроме того, я надеялся сделать txt-файл внутри папки проекта и все еще работать, когда я перемещаю проект. Также thx to Floris Я исправил проблему сравнения – user3011161