0
我正在从一个文件(示例如下所示),逐行阅读,并且对于每一行我使用strtok来获取由制表符分隔的元素(如代码所示)。现在,当我用数据创建文件时,我这样做:键入“A”,键入选项卡,键入“10”按回车,依此类推。在这种情况下,打印号码后会出现奇怪的字符,有时还会出现字母/数字。这个问题的“修补程序”是按以下方式输入数据:键入“A”,按Tab键,键入“10”按标签。任何人都可以向我解释为什么会发生这种情况,有没有更好的解决方法?C++:strtok输入文件行最后一个元素的奇怪行为?
sample.txt
A 10
B 20
C 30
//str contains a line of the file
char * pch = strtok (str,"\t");
//print character
if(pch !=NULL){
cout<<pch<<endl;
}
//print number
pch = strtok (NULL, "\t");
if(pch !=NULL){
cout<<pch<<endl;
}
这取决于你如何阅读线条。这听起来像'str'不是空的终止,即它是一个字符缓冲区,而不是一个有效的C字符串。 – 2013-03-12 00:02:37