【发布时间】:2017-07-08 04:04:16
【问题描述】:
我正在尝试自学 C,所以我正在编写一个程序来查看一个字符串是否出现在另一个字符串的末尾。
#include <stdio.h>
#include <stdlib.h>
int containsAtEnd(char *s, char *t);
int strlen(char *s);
int main()
{
char *x = "tacocat";
char *y = "bol";
printf("%d\n", strend(x, y));
getchar();
return 0;
}
int strlen(char *s)
{
int i;
for (i = 0; i != '\0'; ++i)
;
printf("%d", i);
return i;
}
int containsAtEnd(char *s, char *t)
{
int tlen = strlen(*t);
int slen = strlen(*s);
int i = 0;
s += slen - tlen;
while ((*s == *t) && *s != '\0')
i++; s++; t++;
if (i < (tlen-1))
return 0;
else
return 1;
}
然而,不管主函数中给出的字符串如何,总是打印“001”,表示0中的字符串的长度和第二个字符串的长度都存在于第一个中。
【问题讨论】:
-
i != '\0'-->s[i] != '\0',int tlen = strlen(*t);-->int tlen = strlen(t); -
读取编译器警告!
-
while(...)-->while(...){ ...}
标签: c pointers dereference