如何在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); 所以你不要超过你的缓冲区. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |