C 需要帮助创建一个返回键入字符串大小的函数吗

C 需要帮助创建一个返回键入字符串大小的函数吗,c,c-strings,C,C Strings,因此,我正在做的练习题要求编写一个完整的C程序,从键盘输入文本行,并计算输入字符串的大小。程序应使用函数StringLength,该函数计算并返回给定字符串的大小。函数具有以下原型:size\u t stringLengthconst char*sPtr 以下是我所拥有的,但我仍在学习过程中的诀窍。我假设它也要求实现指针,当涉及到指针时,我非常暴躁。这个函数基本上就是我所停留的地方,有什么提示或指针吗 #include <stdio.h> // prototype size_t s

因此,我正在做的练习题要求编写一个完整的C程序,从键盘输入文本行,并计算输入字符串的大小。程序应使用函数StringLength,该函数计算并返回给定字符串的大小。函数具有以下原型:size\u t stringLengthconst char*sPtr

以下是我所拥有的,但我仍在学习过程中的诀窍。我假设它也要求实现指针,当涉及到指针时,我非常暴躁。这个函数基本上就是我所停留的地方,有什么提示或指针吗

#include <stdio.h>

// prototype
size_t stringLength(const char* sPtr) {

    int* str = &sPtr;
    return sizeof(str);
}

int main() {

char* s[100]; //input string

puts("Enter a string");
fgets(s, 99, stdin);

printf("According to stringLength, the length is: %d\n", stringLength(&s));

return 0;
}
应该使用字符数组而不是字符数组*来存储字符串。 sizeof用于确定类型的大小。您应该使用strlen来确定字符串的长度。 在固定了s的类型之后,将s,而不是&s传递给stringLength,以使数据类型与参数匹配。 %d表示打印int。您应该使用%zu打印大小。 试试这个:

#include <stdio.h>
#include <string.h>

// prototype
size_t stringLength(const char* sPtr) {

    return strlen(sPtr);
}

int main() {

    char s[100]; //input string

    puts("Enter a string");
    fgets(s, 99, stdin);

    printf("According to stringLength, the length is: %zu\n", stringLength(s));

    return 0;
}

在C语言中,字符串是一个字符数组,末尾有一个称为NUL终止符的0。因此,您需要一个循环来搜索0;否-1,它将确保字符串以nul结尾。您也可以使用fgets s、sizeof s、stdin;另一个注释。使用fgets时,由于按Enter键而导致的尾随“\n”将包含在存储字符串的末尾。通常,您希望通过使用nul终止字符进行覆盖来删除该字符。但请注意,要做到这一点,您必须向前扫描到字符串的末尾,这将为您提供不希望重复扫描的字符串长度。因此,考虑一下你的功能检查,如果存在的话,删除'\n '。实际上,你不需要函数,你只需要做尺寸透镜;s[len=strcspns,\n]=0;在你打电话给fgets后立即。完全正确,但为什么不直接使用strlen?通常要求他们使用指针算法来实现函数。就是这样,谢谢。我一周前就知道斯特伦了,我一定忘了它到底是干什么的。再次感谢。