您好我正在编写一个程序来计算用户输入的行数,我有这段代码:
#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终端来编写和执行程序。
谢谢
答案 0 :(得分:1)
将条件改为这样,
while (( readline(line, max) <= 1)){
...
}
当您输入空的新行时,该新行将被放置在该数组中。
因此,strlen
为1
。
答案 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, 它被视为换行符。
所以你可以检查空字符串。