Функция get_file_name
имеет тип возврата char
char get_file_name(int k){
но возвращает объект типа char *
char s1[100] = "logs/data_";
//...
return s1;
Кроме того, возвращаемый указатель указывает на локальный массив s1
, который не будет работать после выхода из функции.
В этом звонке
strcpy(file_name, get_file_name(k));
тип второго аргумента (то есть char
согласно объявлению функции get_file_name
) должен быть char *
.
Нет ни объявления функции print_results_to_file
, ни ее определения.
В соответствии со стандартом C функция main без параметров должна быть объявлена как
int main( void )
Я бы написал функцию get_file_name
следующим образом
#include <stdio.h>
#include <string.h>
char * get_file_name( char *file_name, size_t n, size_t padding )
{
const char *common_part = "logs/data_";
snprintf( file_name, n, "%s%zu", common_part, padding );
return file_name;
}
int main( void )
{
enum { N = 100 };
char file_name[N];
for ( size_t i = 0; i < 10; i++ ) puts( get_file_name( file_name, N, i ) );
}
Вывод программы
logs/data_0
logs/data_1
logs/data_2
logs/data_3
logs/data_4
logs/data_5
logs/data_6
logs/data_7
logs/data_8
logs/data_9