【发布时间】:2020-10-14 11:06:16
【问题描述】:
所以我尝试不使用 string.h 文件。我创建了有效的字符串长度函数。然后我创建了一个函数来检查两个函数是否相同,但我没有得到任何输出。 我已经测试了字符串长度函数并且有效。我不确定我在第二个函数中做错了什么。请指出错误。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char stringLength(char userString[])
{
int i=0,count=0;
while (userString[i] != '\0')
{
count = (count + 1);
i = (i + 1);
}
return count;
}
bool stringCheck (char a[], char b[])
{
bool isEquals = false;
if (stringLength(a) == stringLength(b))
{
int i=0, count=0;
while (i<stringLength(a))
{
if (a[i] == b[i])
{
count+=1;
}
i+=1;
}
if (count == stringLength(a))
isEquals = true;
else
isEquals = false;
}
else
isEquals = false;
return isEquals;
}
int main()
{
stringCheck("abcd", "abcd");
return 0;
}
【问题讨论】:
-
当从
main调用时,您还没有存储stringCheck的返回值。那么您如何确定功能失败?如果这不是问题,那么在调试器中逐行执行代码。 -
附带说明:在同一字符串上多次调用
stringLength效率低下。最好将长度存储在变量中并在需要的地方使用它。 -
另一边注:使用返回类型
char为stringLength意味着它仅适用于某些平台上最长为 127 个字符的字符串,而在某些平台上最长为 255 个字符的字符串平台。由于您使用int变量来保存长度,因此最好使用返回类型int。 (实际上,最好使用size_t而不是int,因为它与strlen函数相匹配。) -
没有产生任何形式输出的函数可以解释缺乏输出。
标签: c equality c-strings return-type function-definition