Szukanie literki znaku w łancuchu.

0

Mam problem. Mam napisać funkcję która będzie pobierała łancuch i znak a następnie wyświetlała 1 jeśli literka jest w tym łańcuchu lub 0 jeśli jej nie ma.
Coś mi nie wychodzi. Program po pierwsze zwraca 2 wartości a po drugie jeśli literki nie ma to i tak wyświetla 1.

#include <stdio.h>
#include <stdlib.h>
int zawiera(char *tekst, char *ch);
int main ()
{char znak;
char napis[10];
printf("Podaj napis\n");
gets(napis);
printf("Podaj znak\n");
scanf("%c",&znak);
printf("%d",zawiera(napis,znak));

}
int zawiera(char *tekst, char *ch)
{
int i;
int a;
a=strlen(tekst);
for(i=0;i<a;i++)
    {
    if(i==a)
        return 1;
    if(tekst[i]==ch)
        return 0;

    }

}
 
0
int zawiera(char *tekst,char ch)
  {
   for(;*tekst;++text) if(*tekst==ch) return 1;
   return 0;
  }
0
    if(tekst[i]==ch)
        return 0;
 

Powinna tutaj być gwiazda, bo to jest wskaźnik, a nie obiekt. Wcześniej porównywałeś adres.

I tutaj

if(i==a)
        return 1;

Nigdy tego warunku nie spełnisz, bo pętle for w której to masz, masz do warunku i < a;
Żeby zadziałało musisz zmienić na:

if( i == (a-1) )
        return 1;

1 użytkowników online, w tym zalogowanych: 0, gości: 1