gpt4 book ai didi

c - 读取输入并将其放入字符指针

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:14 25 4
gpt4 key购买 nike

我做了一个关于将输入放入字符指针的测试用例。当我尝试运行该程序时,输出不正确(它变成了一系列随机字符,如:_ @$)。我打算打印该字符指针中的每个元素。我对我的代码做了一些更改,但它仍然是错误的(和以前一样的问题)。有人可以帮我找出问题所在以及解决方法吗?

int chara;
int counts =0;

main(){

char *buffer=(char *)malloc(sizeof(char)*25);
while((chara=getchar())!= EOF&& counts<25){
*buffer++ = chara;
printf("%c\n",*buffer);
counts++;

}
*buffer = '\0';
printf("%s\n",buffer);
free(buffer);
}

最佳答案

由于你在循环中增加了buffer的值,所以循环后的代码是错误的。您不能 free() 递增的 buffer,它将指向 malloc() 未返回的地址。

基本上你在做:

char *buffer = malloc(25);
...
free(buffer + length of string the user entered);

这意味着您传递给 free() 的地址不再与 malloc() 返回的地址相同,这是一个错误。

关于c - 读取输入并将其放入字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com