【发布时间】:2014-10-18 04:06:58
【问题描述】:
void initializeCar(Car* v,char* mainFileIn)
{
int counter = 0;
int i = 0;
FILE* fp = fopen(mainFileIn, "r");
char* line = NULL;
size_t len = 0;
ssize_t read;
char* pch;
while((read = getline(&line, &len,fp)) != -1)
{
if(i == 50)
{
printf("Cannot hold more than 50 Cars.");
exit(1);
}
pch = strtok(line,",");
v[i].pid = ++counter;
v[i].xLocation = (float)strtod(pch,NULL);
printf("pch: %s\n",pch);
pch=strtok(NULL,",");
printf("pch: %s\n",pch);
v[i].yLocation = (float)strtod(pch,NULL);
pch = strtok(NULL,",");
printf("pch: %s\n",pch);
v[i].velocity = (float)strtod(pch,NULL);
pch = strtok(NULL,",");
printf("pch: %s\n",pch);
v[i].angle = (int)strtol(pch,NULL, 10);
v[i].start = NULL;
i++;
}
free(line);
fclose(fp);
}
由于某种原因,我的代码中的所有内容都可以正常工作,只是它在我的最后一行之后读取了一个额外的行,并给了我一个分段错误。我不知道为什么,因为我根据getLine 教程之一建模了我的while 循环:http://man7.org/linux/man-pages/man3/getline.3.html
【问题讨论】:
-
您是否尝试在阅读后打印该行,以确保您获得了您认为您正在获得的数据?
标签: c