这有点复杂,但基本上我正在制作一个程序,我的一个功能有点奇怪。该函数第一次被输入一个字符数组
新传感器节点 SN42 42 3.57 5.0 7。
现在该函数只打印出每个单独的“令牌”(每组字符由空格分隔)。然后打印一个空格,然后打印令牌中的字符数。但是由于某种原因,最后一个标记总是打印得很奇怪,并且额外计算了 1 个字符。
这是功能:
int parseCommandLine(char cline[], char *tklist[]){
int i;
int length;
int count = 0; //counts number of tokens
int toklength = 0; //counts the length of each token
length = strlen(cline);
for (i=0; i < length; i++) { //go to first character of each token
if (((cline[i] != ' ' && cline[i-1]==' ') || i == 0)&& cline[i]!= '"') {
while ((cline[i]!=' ')&& (cline[i] != '\0')){
toklength++;
cout << cline[i];
i++;
}
cout << " " << toklength << "\n\n";
cout << "\n";
toklength = 0;
count ++;
}
if (cline[i] == '"') {
do {
i++;
} while (cline[i]!='"');
count++;
}
}
//cout << count << "\n";
return 0;
这是输出(对于第一个数组):
new_sensor_node 15
SN42 4
42 2
3.57 4
5.0 3
7.
3
关于可能导致这种情况的任何想法?我怀疑这可能与我处理空字符的方式有关