我正在做一些家庭作業,並想知道是否有太多的嵌套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