使用指针算法对字符串长度函数进行编码

Coding a string length function using pointer arithmetic

我是 CS 初学者 class 学习 C,我们的任务是编写一个函数来仅使用字符串指针来查找字符串长度。我有以下代码:

#include <stdio.h>

int strlength(char* str);

int main() {
    char *str;
    int comp;

    printf("Please enter the string: ");
    scanf("%s", str);

    printf("The length of the string is: %d\n", strlength(str));
    return 0;
}

int strlength(char *str) {
    int length = 0;

    while(*str != '[=10=]') {
        length++;
        str++;
    }
    return length;
}

我不太确定哪里出现了分段错误。我已经尝试在 strlength 函数中创建第二个指针,该指针等于 str 并递增它,但这也给了我一个分段错误。任何见解将不胜感激!

char *str;
int comp;

printf("Please enter the string: ");
scanf("%s", str);

您应该在 scanf 之前为 *str 在堆中分配内存(使用 malloc)。如果您不想使用 malloc 将其更改为 char[number] 以便它可以在堆栈而不是堆中分配内存