Главная / Программирование на языке 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); }

вопрос

Правильный ответ:

if( (fp = fopen(strFileName, "w+t")) == NULL ) printf( "Problem opening the file\n" );
if( (fp = fopen(strFn, "w+t")) == NULL ) printf( "Problem opening the file\n" );
if( (fp = fopen(strFileName, "a")) == NULL ) printf( "Problem opening the file\n" );
if( (fp = fopen(strFileName, "r+")) == NULL ) printf( "Problem opening the file\n" );
Сложность вопроса
57
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Если бы не эти ответы - я бы не смог решить c этими тестами интуит.
30 сен 2020
Аноним
Большое спасибо за тесты по intiut'у.
22 янв 2018
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.