2013-04-22 3 views
1

Я пытаюсь сделать функцию indexOf в C. Функция должна найти положение любой буквы ИЛИ слова, заданного в параметрах. Но когда я попытался использовать один из них, компилятор предупредил бы как «слишком мало аргументов». Как я могу это сделать? Благодарю.Параметры функции по умолчанию в C

#include<stdio.h> 
#include<conio.h> 
#include<string.h> 

int indexOf(char*, char*, char); 

int main(){ 
    char stuff[] = "abcdefghijklmopqrstuvwxyz"; 

    printf("Result: %d", indexOf(stuff, 'b')); 
    printf("Result: %d", indexOf(stuff, "defg")); 

    getch(); 
    return 0; 
} 

int indexOf(char *text, char *word, char letter){ 
    if(word == DEFAULT VALUE) 
     // find the letter in the text 
    else if(letter == DEFAULT VALUE) 
     // find the word in the text 
} 

ответ

5

Вы не можете сделать это в C: язык не поддерживает перегрузки или параметры по умолчанию. Единственное, что вы можете сделать для эмулирования этого, - это использовать переменное количество параметров, но это не сработает здесь, потому что вам нужно будет передать дополнительный параметр, указывающий тип просматриваемого элемента.

Лучше было бы определение двух функций

int indexOfChar(char *text, char letter) 
int indexOfWord(char *text, char *wors) 

или еще лучше, используя соответствующие функции из стандартной библиотеки - strchr и strstr.

+2

О, боже мой, я только что заметил, что вы предложили точно такое же решение за несколько секунд до меня - это должно быть правильное дело :) – piokuc

+0

@piokuc Это смешно - даже имена функций вышли одинаково :) – dasblinkenlight

4

Там нет такого понятия, как параметры функции по умолчанию в C. C++ имеет функцию, но не C.

В вашем случае я бы определил две функции вместо одного indexOf: indexOfWord и indexOfChar.

Смежные вопросы