当用户输入空行时终止c程序

时间:2015-04-20 09:16:16

标签: c input

您好我正在编写一个程序来计算用户输入的行数,我有这段代码:

#include <stdio.h>
#include <string.h>

int readline(char line[], int max);

/* count lines in input */
main() {
int c, nl,max, i;
max = 99;
char line[100];
nl = 0;


while (( readline(line, max) != 0)){
    ++nl;

  }
  printf("%d\n", nl);
}

/* readline: read a line from standard input, return its length or 0
 */
int readline(char line[], int max)
{
  if (fgets(line, max, stdin) == NULL)
    return 0;
  else
    return strlen(line);
}

但我不知道如何终止该计划并且有&#34; nl&#34;打印到屏幕上,我正在使用cygwin64终端来编写和执行程序。

谢谢

2 个答案:

答案 0 :(得分:1)

将条件改为这样,

while (( readline(line, max)  <= 1)){
  ...
}

当您输入空的新行时,该新行将被放置在该数组中。 因此,strlen1

答案 1 :(得分:1)

size_t n;
while(fgets(line,max,stdin))
{
   n = strlen(line);
   if( n == 1 && line[n-1] == '\n')
   {
     //This is a empty line 
   }
}

基本上fgets()附带换行符,您可以使用它来确认行中是否有任何输入或只输入换行符。

  

readline返回读取行的文本。空行返回   该          空字符串。如果在读取线条和线条时遇到EOF          为空,返回NULL。如果使用非空行读取EOF,          它被视为换行符。

所以你可以检查空字符串。