gpt4 book ai didi

c - 字符串长度始终为 0

转载 作者:行者123 更新时间:2023-11-30 19:08:33 25 4
gpt4 key购买 nike

我正在尝试自学 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 和第二个字符串的长度。

最佳答案

请尝试以下代码是否可以帮助您。我还建议您使用 IDE 或分析程序,它会告诉您如何从整数获取指针,而无需进行强制转换和始终为真(或始终为假)的条件。

#include <stdio.h>

int containsAtEnd(char *s, char *t);
int strlen(char *s);

int strlen(char *s)
{
int i;
for (i = 0; s[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;
}

int main()
{
char *x = "tacocat";
char *y = "bol";
printf("%d\n", containsAtEnd(x, y));

char *x2 = "foobarbaz";
char *y2 = "bar";
printf("%d\n", containsAtEnd(x2, y2));

getchar();
return 0;
}

关于c - 字符串长度始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com