Следующее создает и печатает таблицу случайных чисел на консоли. Как я могу изменить функцию createtxt, которую я создал, так что вывод на консоли генерируется в текстовый файл одновременно.Как выводить одновременно на консоль и текстовый файл таким образом, чтобы они были идентичными
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
FILE* createtxt(char* fnam){
FILE* ofp;
ofp = fopen(fnam, "w");
if (ofp == NULL) {
printf("Cannot open output file %s\n", fnam);
exit(EXIT_FAILURE);
}
void closetxt(FILE* ofp){
fclose(ofp);
}
int main (void){
printf("Table of random numbers for drawing geometric shapes in different colours, sizes and opacities\n");
int rn = 0;
unsigned int seed = (unsigned int)time(NULL);
srand(seed);
int k = 0;
printf("shape#\tRSCE\tx\ty\twidth\theight\tred\tgreen\tblue\tgreen\topacity\n");
while (k < NO_SHAPES){
printf("%6d", k);
rn = rand() % SHAPE_RANGE;
printf("\t%4d",rn);
rn = rand() % X_RANGE;
printf("\t%d",rn);
rn = rand() % Y_RANGE;
printf("\t%d",rn);
rn = rand() % WIDTH_RANGE;
printf("\t%5d",rn);
rn = rand() % HEIGHT_RANGE;
printf("\t%6d",rn);
rn = rand() % RED_RANGE;
printf("\t%3d",rn);
rn = rand() % GREEN_RANGE;
printf("\t%5d",rn);
rn = rand() % BLUE_RANGE;
printf("\t%4d",rn);
rn = rand() % OPACITY_RANGE;
printf("\t%.1f\n",rn/100.0);
k++;
}
FILE* ofp = createtxt("myrandom.txt")
closetxt(ofp);
return EXIT_SUCCESS;
}
'printf()' все для файла 'myrandom.txt'. Прочитайте его и распечатайте на' stdout'. (Предположим, это не _simultaneous_) – chux
Невозможно сделать что-то подобное, так как вы не можете делать две вещи, даже если вы используете потоки, они не гарантированно работают одновременно. –
Вам нужно либо захватить его, когда он создается, и чередовать запись на экран с помощью записи в файл, либо вы можете просто сохранить конкатенация новых строк даты в более крупный буфер, а затем передать в качестве аргумента 'createtxt()'. Оба показаны ниже. – ryyker