在计数数组长度的同时获取***检测到堆栈粉碎***

我在Ubuntu 20.04上使用VS代码。我正在学习C编程。该程序将使用函数计算数组的长度。在运行程序时,我可以向数组输入但不能获取数组的长度。代码为:

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

int length(char input[])
{
    int count=0;
    for(int i=0;input[i]!=0;i++)
    {
        count++;
    }
    return count;
}
int main()
{
    char name[10];
    printf("Enter name:");
    scanf("%s",&name[10]);
    int count=length(name);
    printf("%d",count);

}

输出:

Enter name:abc
*** stack smashing detected; terminated
Aborted (core dumped)

代码有什么问题?

评论
笑伴孤单
笑伴孤单
输入名称:abc   ***检测到堆栈粉碎;已终止   中止(核心已弃用)

这是因为

scanf("%s",&name[10]); 

you ask scanf to write after the array with an undefined behavior

你自找的

scanf("%s",&name[0]); 

或更简单

scanf("%s",name); 
点赞
评论