我得到了这个文件解析器来帮助解析文件并将输入拆分为结构数组。我的问题是我不完全理解第二个参数以及它如何与我的结构交互。最好有一个解释,因为我确信我稍后能弄清楚如何将输入放入数组中。
这是解析函数:
void parseLine(char toParse[], struct Weather *toLoad) {
char *theToken;
theToken = strtok(toParse, ",");
toLoad->location = theToken[0];
theToken = strtok(NULL, ",");
toLoad->daynum = atoi(theToken);
theToken = strtok(NULL, ",");
if (theToken != NULL) {
toLoad->temp = atof(theToken);
} else {
toLoad->temp = -400;
}
theToken = strtok(NULL, ",");
if (theToken != NULL) {
toLoad->precip = atof(theToken);
} else {
toLoad->precip = -1.0;
}
}
这是我的结构:
struct Weather {
char location;
int daynum;
double temp;
double precip;
};
这个解析器从我的文件中获取一行(toParse),然后将其分割,但我的问题是第二个参数如何工作,我应该将什么传递给函数?
文件中的示例输入如下所示:
Saskatoon,2,-6.4,0
非常感谢任何帮助。谢谢!
最佳答案
第二个参数是所谓的输出参数。您传入一个指向结构的指针,函数将用操作的结果填充它。它基本上是你的“返回值”。
例如,如果您想使用返回值返回错误代码,则可以使用此技术。或者,如果您想由调用者而不是被调用的函数进行内存分配。
关于c - 理解 C 语言的文件解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824263/