[英]search function double return value possible
我正在寫一個搜索功能。 參數為:
(char *array, char to_find)
char search (char *array, char to_find)
{
int counter;
for (counter =0; array[counter]!='\0'; counter++)
{ if (to_find==array[counter])
return 2;
else return 0;
}
}
int main()
{
char *word[100]="woman";
char letter;
scanf("%c" &letter);
if (search(word, letter)==1)
{
printf("match")}
}
我想知道是否也可以修改此代碼以返回2個值; 如果為true,則返回1和計數器。 例如,我嘗試過:
char search (char *array, char to_find)
{
int counter;
for (counter =0; array[counter]!='\0'; counter++)
{ if (to_find==array[counter])
return 2;
else return 0;
}
}
char searchindex(char *array, char to_find)
{ int counter;
for (counter=0; array[counter]!='\0'; counter++)
{
if (to_find==array[counter])
{
return counter;
}
else return -1;
}
int main()
{
char *word[100]="woman";
char letter;
int position;
scanf("%c" &letter);
/**I tried representing the return values as integers**/
int test1= search(word, letter);
int test2= searchindex(word, letter);
if ((test1+test2)>0)
{printf(match);} /**this had errors but i can't seem to find them**/
}
首先請注意,您的if-else
語句似乎很奇怪。 你有:
char search (char *array, char to_find)
{
int counter;
for (counter =0; array[counter]!='\0'; counter++)
{
if (to_find==array[counter])
return 2;
else return 0; // This strange....
}
}
這意味着您將始終在第一次比較后返回。 您可能想要:
char search (char *array, char to_find)
{
int counter;
for (counter =0; array[counter]!='\0'; counter++)
{
if (to_find==array[counter])
return 2;
}
return 0;
}
然后您問:
…可以修改此代碼以返回2個值
不,在C語言中,只能直接返回一個值。 但是,有很多方法可以“返回”多個值。
例如,通過將指針傳遞給變量,然后使用指針更改值。 喜歡:
char search (char *array, char to_find, int* counter)
{
for (*counter = 0; array[*counter]!='\0'; (*counter)++)
{
if (to_find==array[*counter])
return 2;
}
return 0;
}
// Call it like
int counter;
int test1= search(word, letter, &counter);
另一種方法是制作一個結構並返回該結構。 喜歡:
struct X {
int result;
int counter;
};
struct X search (char *array, char to_find)
{
struct X res;
for (res.counter = 0; array[res.counter]!='\0'; res.counter++)
{
if (to_find==array[res.counter])
{
res.result = 2;
return res;
}
}
res.result = 0;
return res;
}
// Call it like
struct X test1= search(word, letter, &counter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.