2016-10-07 3 views
0

Итак, у меня есть файл 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 и имя файла, который он должен использовать.Как определить и вызвать внешнюю функцию в основной программе, если она содержит int и char в качестве аргументов?

Вопросы: Моя функция calc.c должна иметь 2 входа, один «int» и другой «char». В заголовочном файле, calc.h у меня есть:

int calc(int i, char filename); 

Должен ли я просто запустить функцию как

Вычислено
int calc(int i, char filename){ 
     FILE * pointer; 
     int ...; 
     double ...; 
     pointer = fopen(filename, "r"); 
     . 
     . 
     . 
    } 

? Четко определены типы функций и аргументов? Как я могу назвать эту функцию сейчас из основной программы? Должен ли я просто написать что-то вроде

int main (void) { 
    ...  
    calc(i, filename); 
    ... 
    } 

В попытках заставить его работать, я получил различные ошибки, как «ожидается„полукокс“, но аргумент типа„символ *“,» передавая аргумент 1 из „FOPEN“ делает указатель из целого числа без гипса [по умолчанию включено]»,„ожидаемый „Const символа * ограничить“, но аргумент типа "полукокс“ ...

Спасибо за помощь, я все еще учусь;)

+0

У вас все правильно (даже если возможно, это может быть «лучше» написано), за исключением одной ошибки: в C строки являются символами 'char *', а не 'char'. Разумеется, последствия этого не могут вписаться в эти несколько слов, но вы можете легко найти «строки в C». – Jon

ответ

3

Использовать char *filename вместо char filename. Как

+0

Хорошо, кажется, по крайней мере, я избавляюсь от ошибок. Но тогда у меня есть дополнительный вопрос ... если в файле calc.c есть инструкции printf, и я вызываю это из main.c, если он записывает вывод printf в терминал или мне нужно сделать файл, в котором мой новый значения из calc.c будут сохранены? –

+0

@makeasmile это принт на терминал. –

+0

О, ладно, я так напрягаю, но это не так, мне кажется, у меня еще есть работа: P Tnx! –