我正在尝试从文件中读取数据,对其进行标记并对其进行排序,但是strtok
当我运行它时行为不规律,有时它会工作,有时它不会,而且我得到非常短/奇数的标记。
Valgrind 似乎认为这是因为 strtok 依赖于未初始化的值(我认为):
==7069== Conditional jump or move depends on uninitialised value(s)
==7069== at 0x40B61A3: strtok (strtok.S:160)
==7069== by 0x8048842: main (main.c:58)
这是我认为 valgrind 指责的功能:
char * getNextToken(char * line) {
char delim = ',';
return strtok(line, &delim);
}
这可能是因为线路NULL
适用于我的大部分电话strtok
吗?
这是我对该函数的调用:
strcpy(performer, getNextToken(inputLine));
strcpy(title, getNextToken(NULL));
strcpy(charMin, getNextToken(NULL));
/*etc...*/
我不知道是什么原因造成的,我给出的所有值strtok
都是我所期望的。另外我偶尔会遇到堆栈粉碎错误,我不知道为什么。