代码添加了 和1,我不知道为什么
Code adding and 1, and I don't know why
这有点复杂,但基本上我正在编写一个程序,其中一个函数的行为有点奇怪。函数第一次输入一个字符数组
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] != ' ')){
toklength++;
cout << cline[i];
i++;
}
cout << " " << toklength << "nn";
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
有什么想法可以导致这个?我怀疑这可能与我如何处理空字符
很可能输入字符串实际上在末尾包含换行符。根据您读取输入的方式,它可能在输入中,也可能不在输入中。例如,fgets
函数读取换行符并将其留在缓冲区中。
特别是因为您实际上没有对输入字符串进行任何实际的标记化或修改,您只是逐个字符打印,这是一个很可能的场景
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 我不知道为什么我的矢量无法推回
- 语法检查器指出一些我不知道为什么的错误
- 我不知道为什么我的字符串无法保存值
- 编写蒙特卡洛集成程序,我不知道为什么我会收到某些错误
- 我不知道为什么会发生堆损坏(关于内存分配问题)
- 库特是空的,我不知道为什么
- C++:我需要在这里包含这个标题,我不知道为什么