#c #function #header-files
#c #функция #заголовочные файлы
Вопрос:
Итак, у меня есть файл main.c, в котором находится мой код, и внешний файл calc.c, в котором я хочу выполнить некоторые вычисления. Я определяю файл заголовка в main.c (calc.h) и должен просто вызвать функцию calc.c в какой-то момент. В main.c у меня есть 3 входа через терминал, назовем их a, b и c, и это некоторые числа. В зависимости от чисел, которые я ввожу в качестве входных данных, я создаю имя файла (например, a5b3c7), которое я сохраняю в «char filename». Затем в main.c я выполняю некоторые вычисления и записываю таблицу значений в этот файл «a5b3c7». Итак, это массив значений. Теперь, после записи всех значений в таблице и закрытия файла «a5b3c7», я хочу вызвать функцию calc.c и выполнить некоторые вычисления с числами, которые находятся в созданной таблице. Мне нужно передать в качестве аргументов один int и имя файла, который он должен использовать.
Проблемы: Моя функция calc.c должна иметь 2 входа, один «int» и другой «char». В заголовочном файле calc.h У меня есть:
int calc(int i, char filename);
Должен ли я просто запустить функцию calc.c как
int calc(int i, char filename){
FILE * pointer;
int ...;
double ...;
pointer = fopen(filename, "r");
.
.
.
}
? Четко ли определены типы функций и аргументов?
Как я могу вызвать эту функцию сейчас из основной программы?
Должен ли я просто написать что-то вроде
int main (void) {
...
calc(i, filename);
...
}
Пытаясь заставить ее работать, я получил разные ошибки, такие как «ожидаемый ‘char’, но аргумент имеет тип‘char *’, «передача аргумента 1 из ‘fopen’ делает указатель из целого числа без приведения [включено по умолчанию]», «ожидаемый ‘const char * restrict’, но аргумент имеетвведите ‘char’»…
Спасибо за помощь, я все еще учусь 😉
Комментарии:
1. У вас все правильно (даже если, возможно, это можно было бы написать «лучше»), кроме одной ошибки: в C строки есть
char*
, а неchar
. Конечно, последствия этого не могут поместиться в эти несколько слов, но вы можете легко найти материал «строки в C».
Ответ №1:
Используйте char *filename
вместо char filename
. Нравится
int calc(int i, char *filename);
Комментарии:
1. Хорошо, кажется, что, по крайней мере, я избавляюсь от ошибок. Но тогда у меня есть дополнительный вопрос… если в файле calc.c есть операторы printf, и я вызываю его из main.c, должен ли он записывать вывод printf в терминал или мне нужно создать файл, в котором будут сохранены мои новые значения из calc.c?
2. @makeasmile это печать на терминале.
3. О, хорошо, я так думаю, но это не так, похоже, мне еще предстоит поработать: P Tnx!