Главная /
Программирование на языке C в Microsoft Visual Studio 2010 /
Каким образом необходимо выполнить открытие файла для того, чтобы для каждого запуска программы сохранялся отдельный файл лога, содержащий описание всех действий, выполненных в программе (при условии, что программа запускается не более одного раза в минут
Каким образом необходимо выполнить открытие файла для того, чтобы для каждого запуска программы сохранялся отдельный файл лога, содержащий описание всех действий, выполненных в программе (при условии, что программа запускается не более одного раза в минуту)?
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
void AddToLog(FILE*, char*);
char* GenerateFileName();
int main (void)
{
FILE *fp;
char *strFile, strFn[30] = "";
double (*pFunc) (double);
int c = 1;
double y;
strFile = GenerateFileName();
strcpy(strFn, strFile);
<Открытие файла>
while(1) {
printf("Выберите функцию (0-выход): 1-sqrt, 2-sin, 3-tan\n");
scanf("%d", &c);
switch(c) {
case 1:
pFunc = sqrt;
AddToLog(fp, "Пользователь выбрал функцию 1 (вычисление квадратного корня)\n");
break;
case 2:
pFunc = sin;
AddToLog(fp, "Пользователь выбрал функцию 2 (вычисление синуса)\n");
break;
case 3:
pFunc = tan;
AddToLog(fp, "Пользователь выбрал функцию 3 (вычисление тангенса)\n");
break;
case 0:
AddToLog(fp, "Пользователь завершил выбор функции\n\n");
printf("Лог сохранен в файл %s\n", strFn);
return;
default:
AddToLog(fp, "Пользователь задал неверный номер функции\n\n");
continue;
}
y = pFunc(1.1);
AddToLog(fp, "Вычислено значение выбранной функции\n");
printf("f(1.1) = %.2f\n", y);
AddToLog(fp, "Результат вычисления выведен на экран\n");
}
if (fp != NULL) fclose(fp);
return 0;
}
void AddToLog(FILE *fp, char *str)
{
if (fp != NULL) fputs(str, fp);
}
char* GenerateFileName()
{
char strTime[10] = "";
char strDate[10] = "";
char strFile[30] = "g:\\log_";
char *token;
_strdate(strDate);
_strtime(strTime);
token = strtok(strDate, "/");
while( token != NULL ) {
strncat(strFile,token,2);
token = strtok( NULL, "/" );
}
strncat(strFile,"_",1);
token = strtok(strTime, ":");
while( token != NULL ) {
strncat(strFile,token,2);
token = strtok( NULL, "/" );
}
strncat(strFile,".txt",4);
}
вопрос
Правильный ответ:
Сложность вопроса
57
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Комментарии:
Аноним
Если бы не эти ответы - я бы не смог решить c этими тестами интуит.
30 сен 2020
Аноним
Большое спасибо за тесты по intiut'у.
22 янв 2018
Другие ответы на вопросы из темы программирование интуит.
- # Функция is_in определяет, входит ли символ c в строку s: int is_in(char *s, char c) (1) { while(*s) (2) if(*s==c) return 1; (3) else s++; (4) return 0; (5) } При выполнении какой строки произойдет выход из фукнции при ее вызове is_in("Lection 10", 'i')?
- # В каком случае файлы автоматически закрываются?
- # Что будет выведено на экран в результате выполнения приведенной программы? int main(void) { union pw { int i; double d; char ch[2]; } pw = {"y"}; printf("pw.d = %.2f", pw.d); return 0; }
- # Что делает приведенная программа? #include <stdio.h> #define N 5 int main() { int m, i; int arr[N] = {3, 2, 4, 5, 1}; m = 1; for (i=1; i<N; i++) if (arr[i]>arr[m]) m = i; printf("a[m] = %d", arr[m]); return 0; }
- # Задан фрагмент кода: int n, m; char *ptr; printf(&\nEnter a dimention of character array: &); scanf_s(&%d&, &n); _flushall(); ptr = (char *)malloc((n+1)*sizeof(char)); if (!ptr) { printf(&\nERROR! Out of memmory (error in malloc() function). Press any key...&); _getch(); exit(1); } printf(&Enter a character array (not more than %d characters): &, n); gets_s(ptr, n+1); m = strlen(ptr); printf(&\nStart line: %s&, ptr); ptr = (char *)realloc(ptr, (m+2)*sizeof(char)); if (!ptr) { printf(&\nERROR! Out of memmory (error in realloc() function). Press any key...&); _getch(); exit(1); } strcat_s(ptr, m+2, &!&); printf(&\nStart line and character \&%c\&: %s&, '!', ptr); free (ptr); В запросе размерности массива пользователь задал 80. В запросе ввода строки пользователь ввел строку "Lection 9". Для чего в данном случае будет использована функция realloc()?