在下面的例子中,从“C编程”一书中,当输入字符时,程序计数两次。
main(){
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
输出:
a
b
c
d
e
f
12
怎么了?
我正在使用Ubuntu和gcc编译器。
答案 0 :(得分:5)
它正确计数。 for
正在考虑按 ENTER 键,作为换行符import yagmail
yag = yagmail.SMTP(host="127.0.0.1")
yag.send(to"rajiv@domain.com", subject="subject", contents="content")
。所以6 用户输入和6个换行符。计数匹配。
如果您不希望新换行计为输入,则需要在getchar()
返回值不是\n
时递增计数器,像
getchar()
将完成工作。请注意,\n
应为while ( (c = getchar()) != EOF) {
if ( c != '\n') ++nc;
}
类型,以便能够处理c
。
根据int
或EOF
,对于托管环境,C99
的签名至少应为C11
以符合标准。