我正在做一些家庭作业,并想知道是否有太多的嵌套while循环这样的事情。嵌套几个while循环有缺点吗?如果是的话,那么如何重构我下面的代码片段?嵌套许多while循环有问题吗?
下面是一次一行读取文件的代码,解析由某些定义的分隔符分隔的字段,并在打印到控制台之前移除前导空白。
// Read the file one line at a time
while (fgets(lineStr, MAXLINELENGTH, fp) != NULL)
{
charPtr = strtok(lineStr, DELIMITERS);
// Loop until line is parsed
while (charPtr != NULL)
{
// Skip past leading whitespace
while (isspace(*charPtr))
charPtr++;
puts(charPtr);
charPtr = strtok(NULL, DELIMITERS);
}
}
不,嵌套循环没有问题。 – pmg 2012-04-25 22:49:22
尽管您可能想要将其中的一些封装到反映他们正在做的事情的方法中 - 最后一个变成了'skipSpaces()'或其他类似的东西。 – 2012-04-25 22:51:16
如果输入可以包含负值字符(*值大于127 *),您可能需要将参数转换为'isspace'以避免未定义的行为:'isspace((unsigned char)* charPtr)' – pmg 2012-04-25 22:51:20