I'm trying to make a indexOf function in C. The function must find the position of any letter OR word which given in parameters. But when i tried to use one them, the compiler would alert as "too few arguments". How can i do that? Thanks.

#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
}
有帮助吗?

解决方案

You cannot do that in C: the language does not support overloads or default parameters. The only thing that you can do to emulate this would be using variable number of parameters, but that would not work here, because you would need to pass an additional parameter indicating the type of the item being searched.

A better approach would be defining two functions

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

or better yet, using the corresponding functions from the standard library - strchr and strstr.

其他提示

There is no such thing as default function parameters in C. C++ has the feature, but not C.

In your case I would define two functions instead of one indexOf: indexOfWord and indexOfChar.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top