如何将函数的返回值存储到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]);
}