【发布时间】:2018-02-27 22:26:45
【问题描述】:
我有一个这样的结构:
struct vertices{
char x[20];
char y[20];
char z[20];
};
然后在 main 中我有一个这样的结构顶点数组:
struct vertices vert[64];
在我的主函数中加上一个字符数组,如下所示:
char exampleArray[200]="v 23.232000 32.33000 2.03900\nv 9.20900 3.29000 1.0002\n";
所以我想做的是解析这个包含大约一百个顶点的大数组,并将每个值存储在结构顶点的相应 x,y,z 字符数组中,稍后我将简单地转换为呼唤
float x=atof(vert[1].x) 并画出每一张。
但问题是我无法以任何方式将原始数组中的字符存储、复制、连接到 x、y、z 数组,我尝试在不同的条件下通过vert[0].x=exampleArray[0], vert[0].x=exampleArray+i 等来做到这一点,例如
if(SpaceCount==1)
{
vert[0].x[0]=exampleArray[i];
i++;
}
但这一切都行不通。
我尝试了很多变体,无法全部列出。 但是我想要的是解析exampleArray,它有我的原始格式的顶点,每个3D顶点之间都有空格,每个顶点都以char V开头,后跟一个空格,第一个点是X,然后是一个空格然后是 Y 点,在 Z 点之后有换行符 \n 字符,然后是新顶点的 V。
【问题讨论】:
-
vert[0].x是char[20]和exampleArray[0]是char。我认为您正在尝试复制字符串,在这种情况下您需要使用类似strcpy -
您可以使用 strcpy 将一个 char 数组复制到另一个。并将字符串拆分为数组使用 strtoken
-
我试过 strcat、strcpy 等......这就是问题所在,我只是想解析 exampleArray 并从中获取 X、Y、Z 点,然后将它们复制到 Vert[0] .x 或 Vert[1].X 或 Vert[2].Y 等,我知道 exampleArray[i] 是一个 Char 但它在一个循环内,这意味着我正在尝试将一个字符一个字符地复制到 vert[0 ].x 例如。
-
您到底尝试了什么,又是如何失败的?
-
您的
exampleArray内容与您对格式的描述不符。
标签: c arrays linux char wavefront