gpt4 book ai didi

c - Int 到 char 数组作为函数返回 char 数组的简单方法

转载 作者:行者123 更新时间:2023-11-30 20:50:39 24 4
gpt4 key购买 nike

我一直在互联网上寻找这个问题,到目前为止,我只发现了很多需要具体答案的问题,而不是一般性的问题。

我对 C 有点生疏。我想创建一个返回字符数组的函数。

这是我得到的,但不起作用。基本上是一种将字节数组转换为字符数组以便稍后执行 atoi 的方法..

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

char *get_char(int my_byte[], int packetsize)
{
char *array_char=(char *) malloc(sizeof(char)*10); //trying this but didnt work
// char array_char[10]; //i had it like this before(was told to do it)

for(int i=0;i<10;i++)
{
array_char[i]=my_byte[i]+0;
}

return array_char;
}

int main()
{

int byte_array[]={1,2,3,4,5,6,7,8,9,0};
char *temp;
char data;

temp=get_char(byte_array,10);
data=*temp;
printf("String point %s ",data);

}

最佳答案

两个修复:

  • 当你想转换为字符时,然后

array_char[i]=my_byte[i]+0; 应为 array_char[i]=my_byte[i]+'0'; 注意 ' 0' 是字符(将转换为 int)而不是数字 0(不执行任何操作)。

  • 此外,您还必须释放 main 中的 temp 指针,因为该内存是在 get_char() 函数中动态分配的。
<小时/>

编辑:只需注意 get_char() 中的另一个问题

char *array_char=(char *) malloc(sizeof(char)*10);

应该是

char *array_char= malloc(sizeof(char)*(packetsize+1));

for循环之后,确保缓冲区以NUL结尾:

array_char[packetsize] = '\0';

请注意,您的 packetsize 从未使用过 - 您应该收到一些有关它的编译器警告。在 malloc 中硬编码 10 是不好的 - 它实际上是将 packetsize 解析为参数的整个想法 - 因此请正确使用它。

关于c - Int 到 char 数组作为函数返回 char 数组的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886804/

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