加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C中使用calloc()?

发布时间:2020-12-16 09:32:54 所属栏目:百科 来源:网络整理
导读:如果我的字符串在此程序中超过9个字符,我不应该收到错误吗? // CString.c// 2.22.11#include stdio.h#include stdlib.h#include string.hmain(){ char *aString = calloc(10,sizeof(char)); if (aString == NULL) { return 1; } printf("PLEASE ENTER A WOR
如果我的字符串在此程序中超过9个字符,我不应该收到错误吗?

// CString.c
// 2.22.11

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

main()
{
    char *aString = calloc(10,sizeof(char));

    if (aString == NULL)
    {
        return 1;
    }

    printf("PLEASE ENTER A WORD: ");
    scanf("%s",aString);

    printf("YOU TYPED IN: %sn",aString);
    //printf("STRING LENGTH: %in",strlen(aString));
}

谢谢

blargman

解决方法

您没有收到编译器错误,因为语法是正确的.什么是不正确的逻辑,你得到的是未定义的行为,因为你写入缓冲区末尾的内存.

为什么它是未定义的行为?好吧,你没有分配那个内存,这意味着它不属于你 – 你正在进入一个被警告磁带封闭的区域.考虑您的程序是否在缓冲区之后直接使用内存.您现在已经覆盖了该内存,因为您占用了缓冲区.

考虑使用像这样的大小说明符:

scanf("%9s",aString);

所以你不要超过你的缓冲区.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读