练习2-2 在不使用运算符&&或者||的条件下编写一个与上面的for循环语句等价的循环语句。
1 /*for(i = 0; i < lim - 1 && ((c = getchar()) != '\n' && c != EOF; ++i) 2 s[i] = c*/ 3 4 5 while(i < lim - 1) 6 { 7 while((c = getchar()) != EOF) 8 { 9 while((c = getchar() != '\n') 10 ++i; 11 s[i] = c; 12 } 13 }
用while来做!
书上答案
1 enum loop {NO, YES}; 2 enum loop okloop = YES; 3 i = 0; 4 while(okloop == YES) 5 if(i >= lim - 1) /* outside of valid range ?*/ 6 okloop = NO; 7 else if ((c = getchar()) == '\n') 8 okloop = NO; 9 else if(c == EOF)/*end of file ?*/ 10 okloop = NO; 11 else{s[i] = c 12 ++i 13 }
目测差不多!
还是我的答案不行?