どうやら、このプログラムを自分のコンピューターでコンパイルすると、うまくいくようです。ただし、別のコンパイラでは、セグメンテーション違反エラーが発生します。ここではポインターを使用しましたが、間違って使用した可能性がありますが、論理的にはすべてがエラーなしで機能するはずです。誰かがいくつかのエラーを指摘できれば、それは大歓迎です。
contains.c
#include <string.h>
int contains(char *s, char *t)
{
if (!t)
return 0;
if (!*t)
return 0;
if (s)
{
char *k;
int n = 0;
int l = t;
int len = strlen(t);
int counter = 0;
printf("%d", len);
for(k=s; *k; k++)
{
printf("S: %c ", *k);
printf("T: %c ", *t);
if (*k == *t)
{
printf("Si: %c ", *k);
printf("Ti: %c ", *t);
t++;
counter++;
}
else
{
counter = 0;
t = l;
if (*k == *t)
{
t++;
counter++;
printf("Si: %c ", *k);
printf("Ti: %c ", *t);
}
}
printf("%d\n", len);
printf("%d", counter);
if (counter >= len)
{
n++;
t = l;
counter = 0;
if (*k == *t)
{
t++;
counter++;
printf("Si: %c ", *k);
printf("Ti: %c ", *t);
}
}
}
return n;
}
else
return 0;
}
main.c
#include <stdio.h>
int contains(char *s, char *t);
int main(void)
{
printf ("%d\n", contains ("I wanna shoot something!", "thing"));
printf ("%d\n", contains ("Let's get in range!", "ge"));
printf ("%d\n", contains ("Wanna see the fireworks?", "wanna"));
printf ("%d\n", contains ("Look at the pretty explosions!", " "));
printf ("%d\n", contains ("Kaboom!", ""));
printf ("%d\n", contains ((char *) 0, "aaa"));
printf ("%d\n", contains ("aaa", (char *) 0));
printf ("%d\n", contains ((char *) 0, (char *) 0));
return 0;
}