我试图终止使用fgets()函数的while()循环

时间:2016-03-31 14:26:12

标签: c string loops

char src[5][100];
size_t counter = 0 ;  // counter for src as it is two dimensional            
printf("Enter the string : ");
while( counter < 5 && (fgets(src[counter],100,stdin) != NULL) && src[counter][0] != '\0' ) {
    counter++; 
}

我试图终止这个循环,一种方法是采取某种固定输入,如退出或其他东西,我不想使用它。 另一种方法是按ctrl + D告诉EOF,我也不想这样做。

3 个答案:

答案 0 :(得分:2)

fgets读取一行时,包含终止结束行字符\n。如果用户只按enter,则fgets将返回字符串"\n"而不是空字符串。尝试更换条件

src[counter][0] != '\0' 

通过

src[counter][0] != '\n' 

答案 1 :(得分:1)

break;正是您所寻找的,它可以在任何时候打破循环

https://msdn.microsoft.com/en-us/library/37zc9d2w.aspx

同样continue用于跳过一个循环周期

https://msdn.microsoft.com/en-us/library/6e3dc2z3.aspx

答案 2 :(得分:1)

正如@Vladp所说,你要么在while循环中使用break,要么你有一个你添加到continue条件的控制变量。判断或不继续循环的唯一方法是使用if语句,并且如果你可以检查,例如,重复次数,经过的时间,或者如你所说,输入来自fgets()。