gpt4 book ai didi

c - 帮忙写getstring函数

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

我在编写 getstring 函数时遇到了一些问题,这是我目前遇到的问题。

问候,V

const char* getstring()
{


char *buffer;
int i = 255;

buffer = (char *)malloc(i*sizeof(char));

*buffer = getchar();
while ( *buffer != '\n' )
{
buffer++;
*buffer = getchar();
}
*buffer = '\0';

const char* _temp = buffer;
return _temp;
}


int main()
{
char* temp = getstring();

for ( ;temp++ ; *temp != '\0')
{
printf("%c", *temp);
}

return 0;
}

最佳答案

_temp 指向字符串的终止 '\0' 时,您将 _temp 设置为 buffer

移动线:

const char* _temp = buffer;

紧接在行之后:

buffer = (char *)malloc(i*sizeof(char));

因此 _temp 指向缓冲区的开始。

你还有其他一些问题:

  1. 不要使用名称 _temp - 带有前导下划线的名称是保留的;

  2. 您需要测试您没有向缓冲区写入超过 i 个字节;

  3. 您应该测试返回 NULLmalloc()

  4. 您需要测试 getchar() 返回 EOF。这意味着您需要将 getchar() 结果存储在 int 类型的变量中,然后再将其分配给 *buffer;

  5. 正如 Michael Mrozek 在评论中指出的那样,您的 for 循环中的表达式是错误的。

...作为风格点,sizeof(char) 始终为 1,因此不需要乘以它;并且转换 malloc() 的结果在 C 中是不必要的并且被认为是不可取的(不像 C++,它是必需的)。

关于c - 帮忙写getstring函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641431/

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