如何将函数的返回值存储到C中的数组中

如何将函数的返回值存储到C中的数组中,c,arrays,C,Arrays,这个循环只是将data[]中的每个字符传递给一个函数cast,该函数将字符转换为ascii 我的问题是,我想将返回值存储到数组“buffer[]”中,但它只存储第一个返回值。换句话说,我希望buffer[]包含函数中所有返回的值 for (int i =0 ; i < 8; i++) { if (data [i] != '\0') { buffer [i] =cast(data[i]); } } long cast (char b) {

这个循环只是将
data[]
中的每个字符传递给一个函数
cast
,该函数将字符转换为ascii

我的问题是,我想将返回值存储到数组“buffer[]”中,但它只存储第一个返回值。换句话说,我希望
buffer[]
包含函数中所有返回的值

for (int i =0 ; i < 8; i++)
{
    if (data [i] != '\0')
    {
        buffer [i] =cast(data[i]);   
    }
}

long cast (char b)
{
    long x = 0;
    x = (long)b;    
    return x;
}
for(int i=0;i<8;i++)
{
如果(数据[i]!='\0')
{
缓冲区[i]=cast(数据[i]);
}
}
长播(字符b)
{
长x=0;
x=(长)b;
返回x;
}

无需编写函数,只需执行类型转换即可

buffer[i] = (long)data[i];

通过使数据数组和缓冲数组的大小相同,我解决了这个问题。 榜样


因此,现在从数据转换的每个元素都保存在缓冲区数组中。

如果循环条件处理字符串,那么它也有一个基本缺陷

for (int i =0 ; i < 8; i++)
{
    if (data [i] != '\0')
    {
        buffer [i] =cast(data[i]);   
    }
}
for(int i=0;i<8;i++)
{
如果(数据[i]!='\0')
{
缓冲区[i]=cast(数据[i]);
}
}
如果数据[3]='\0',循环将继续,直到i<8。 我建议,

for (int i =0 ; i < 8; i++)
{
    if (data [i] == '\0')
    {
        break;  
    }
    buffer [i] =cast(data[i]); 
}
for(int i=0;i<8;i++)
{
如果(数据[i]='\0')
{
打破
}
缓冲区[i]=cast(数据[i]);
}

(最初作为注释发布)

您不需要函数来强制转换变量。缓冲区的类型是什么?似乎缓冲区是字符,而您只是有未定义的行为。@Ivanov long Types第二个字符可能是0。我刚刚测试了你的代码,它很好。@Abhishek数据的数据类型是char,缓冲区很长。这就是为什么我要使用铸造。谢谢。您帮助我删除了cast函数。作为答案发布,因为注释不喜欢格式化代码。
for (int i =0 ; i < 8; i++)
{
    if (data [i] == '\0')
    {
        break;  
    }
    buffer [i] =cast(data[i]); 
}