Я пишу в текстовый файл, используя следующую декларацию:
void create_out_file(char file_name[],long double *z1){
FILE *out;
int i;
if((out = fopen(file_name, "w+")) == NULL){
fprintf(stderr, "***> Open error on output file %s", file_name);
exit(-1);
}
for(i = 0; i < ARRAY_SIZE; i++)
fprintf(out, "%.16Le\n", z1[i]);
fclose(out);
}
Где z1 - длинный двойной массив длины ARRAY_SIZE. Вызывающая функция:
create_out_file("E:/first67/jz1.txt", z1);
Я определил прототип как:
void create_out_file(char file_name[], long double z1[]);
который я ставлю перед "int main", но после директив препроцессора. Мой код работает нормально.
Я думал о том, чтобы поставить прототип как
void create_out_file(char file_name[],long double *z1).
Это правильно? *z1
будет указывать на первый элемент массива z1
.
Является ли мое объявление и прототип хорошей практикой программирования?
Большое спасибо ...
Обновление : Чтобы сделать программу общей, я определил ARRAY_SiZE как:
const int ARRAY_SIZE = 11;
Прототип становится:
void create_out_file(const char *file_name, const long double *z1, size_t z_size)
вызываемая функция:
create_out_file("/tmp/myname", z1, ARRAY_SIZE);
и в объявлении функции у меня есть
void create_out_file(const char *file_name, const long double *z1, size_t z_size)
FILE *out;
int i;
if((out = fopen(file_name, "w+")) == NULL){
fprintf(stderr, "***> Open error on output file %s", file_name);
exit(-1);
}
for(i = 0; i < z_size; i++)
fprintf(out, "%.16Le\n", z1[i]);
fclose(out);
}
Будет ли это работать?
Новое обновление При компиляции, для строки
for(i = 0; i < z_size; i++)
в объявлении я получаю предупреждение:: предупреждение C4018: '<': несоответствие со знаком / без знака </p>
Что здесь не так?
Спасибо ...
Последние новости : все отлично работает благодаря Джонатану Леффлеру