Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用户输入空行时终止c程序_C_Input - Fatal编程技术网

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

当用户输入空行时终止c程序,c,input,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)){

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

#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);
}
#包括
#包括
int readline(字符行[],int max);
/*计算输入中的行数*/
main(){
int c,nl,max,i;
max=99;
字符行[100];
nl=0;
而((读线(线,最大值)!=0)){
++nl;
}
printf(“%d\n”,nl);
}
/*readline:从标准输入读取一行,返回其长度或0
*/
int readline(字符行[],int max)
{
如果(fgets(行、最大值、标准输入)=NULL)
返回0;
其他的
返回strlen(行);
}
但我不知道如何终止程序并将“nl”打印到屏幕上,我正在使用cygwin64终端来编写和执行程序


谢谢

把条件改成这样

while (( readline(line, max)  <= 1)){
  ...
}
while((读取行,最大值)
基本上,
fgets()
带有一个换行符,您可以使用它来确认行中是否有任何输入,或者只输入了一个换行符

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

所以您可以检查空字符串

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