这有点复杂,但基本上我正在做一个程序,我的一个函数有点奇怪。这个函数是一个字符数组,第一次它是
new_sensor_node SN42 42 3.57 5.0 7.
现在,函数只打印出每个单独的“令牌”(每组字符由空格分隔)。然后打印一个空格,然后打印令牌中的字符数。但出于某种原因,最后一个标记总是打印怪异,并计算额外的一个字符。
以下是功能:
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对是什么原因有什么想法吗?我怀疑这可能与我如何处理空字符有关
发布于 2013-05-12 04:15:04
很可能输入字符串实际上包含末尾的换行符。根据读取输入的方式,它可能在输入中,也可能不在输入中。例如,fgets函数读取换行符并将其保留在缓冲区中。
特别是由于您实际上没有对输入字符串进行任何实际的标记化或修改,您只需逐个字符打印,这是一个非常可能的场景。
https://stackoverflow.com/questions/16504104
复制相似问题