查找字符串长度时出现分段错误

1 c string pointers char string-length

函数计算字符串长度; 我认为这里的逻辑是正确的:

int strlength(char *s)
{
 int count=0;   
 while(*s!='\0')
 {
    count++;
    s++;
 }
  return count;
}


int main(void) {
    char *s;
    int length;
    printf("enter your string ");
    scanf("%s",s);  
    length = strlength(s);
    printf("string length:%d",length);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在这里正确地接受了字符串并分配它吗?任何人都可以解释为什么我在这里得到分段错误?

chr*_*ock 5

s必须指出一些事情.以下是分配128个字节的示例:

s = malloc(128);
Run Code Online (Sandbox Code Playgroud)

完成后,请务必释放内存:

free(s);
Run Code Online (Sandbox Code Playgroud)

请注意,您必须限制可以从用户读取的数量.

scanf("%127s", s);
Run Code Online (Sandbox Code Playgroud)

我为NUL终结器留了一个额外的字节.