首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找字符串长度时出现分段错误

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

Stack Overflow用户
提问于 2017-08-06 13:17:58
回答 2查看 417关注 0票数 1

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

代码语言:javascript
运行
复制
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;
}

我在这里正确地获取了字符串并将其赋值吗?有没有人能解释一下为什么我在这里遇到了分段错误?

EN

Stack Overflow用户

发布于 2017-08-06 13:28:03

main()函数的第二行声明了一个指针。然而,该指针从未被初始化为指向该程序所拥有某些存储器块。

建议使用堆分配函数之一(malloc、calloc、realloc)来初始化该指针。

使用未初始化的指针是未定义的行为,并且(如您所见)会导致seg错误事件。

当调用scanf()函数族中的任何一个时,

  1. 始终检查返回值(而不是参数值)以确保操作成功。
  2. 使用'%s‘输入/格式说明符时,始终包含比输入缓冲区长度小一的最大字符数修饰符,以避免任何缓冲区溢出。这种溢出是未定义行为,可能导致seg故障事件。
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45528793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档