我正在阅读 C编程语言。这是一个问题,即编写程序来计算空白,制表符和换行符。现在我可以使用 \ n 作为换行符, \ t 作为标签,但我第一次听到空白!空白到底意味着什么?对于换行符和选项卡,我编译了以下程序:
#include <stdio.h>
/* program to count blanks, tabs, and newlines */
main (){
long blanks, tabs, newlines, input;
blanks = 0;
tabs = 0;
newlines = 0;
input = 0;
while ((input = getchar()) != EOF)
if (input == '\n')
++newlines;
else if (input == '\t')
++tabs;
printf("Total newlines: %ld\nTotal Tabs: %ld", newlines, tabs);
}
答案 0 :(得分:4)
空白=空格(' '
)
虽然您的代码正常运行但我强烈建议为while循环体添加{ }
。
答案 1 :(得分:0)
空白只是一个空间,大部分时间。您应该查看isblank()
函数以帮助进行分类。
答案 2 :(得分:0)
我确定他们的意思是空格字符''。
请参阅此处获取ASCII码:
也是0x13回车,可不是要找那个?新行实际上并不那么简单,具体取决于文件的格式:
http://en.wikipedia.org/wiki/Newline
和其他人一样,你可能想考虑使用
中的功能答案 3 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Type and Press Enter. CTRL-Z for EOF:\n");
int c;
int b = 0;
int t = 0;
int nl = 0;
while((c = getchar())!=EOF){
putchar(c);
if(c=='\t')
++t;
if(c==' ')
++b;
if(c=='\n')
++nl
}
printf("\n%d and %d\n",b,t,nl);
return 0;
}
如果我们需要知道所有3个值,你已经添加了一个不需要的其他内容。
答案 4 :(得分:0)
请找到下面的代码,这将解决您的完整问题。
#include <stdio.h>
/* Count blank, tabs, and new lines */
main ()
{
long c, b, t, l; /* c for characters, b for blanks, t for tabs, l for lines */
b = 0;
t = 0;
l = 0;
while ( ( c = getchar() ) != EOF )
{
if ( c == '\n')
++l;
if ( c == '\t')
++t;
if ( c == ' ')
++b;
}
printf ("\n No of blanks : %d \n", b);
printf ("\n No of tabs : %d \n", t);
printf ("\n No lines in input: %d \n", l);
}
答案 5 :(得分:0)
我认为空白是新行,然后是新行
#include<stdio.h>
int main()
{
int c,nl,nb,nt;
nl = 0;
nb = 0;
nt = 0;
int flag =1;
while((c = getchar()) != EOF){
if(c == '\n')
{
++nl;
if(flag)
++nb;
flag = 1;
}
else
flag = 0;
if(c == '\t')
++nt;
}
printf("lines : %d, tabs: %d, blanks: %d", nl, nt, nb);
return 0;
}
答案 6 :(得分:0)
此答案-得益于其他用户的贡献-仅使用练习1-8中讲授的材料。按Ctrl + z(我使用Windows DOS)时,程序跳至printf语句,打印答案,然后退出至DOS提示符。
UPDATE activity a
SET a.amount = v.amount,
a.count = v.count
FROM ( SELECT id,
Sum(actual) amount,
Count(id) count
FROM amount_first
WHERE status = 1
AND updated >= 1538323200
AND updated <= 1541001599
GROUP BY id
UNION
SELECT id,
Sum(0) amount,
0 count
FROM amount_second
WHERE type = 3
AND created >= 1538323200
AND created <= 1541001599
GROUP BY id ) v
WHERE v.id = a.playerid
当您按Enter键5次,按空格键2次,按Tab键4次,然后按Ctrl + z时,您将得到
总空白:2 标签总数:4 换行符总数:5
然后是DOS提示符。
答案 7 :(得分:0)
我认为的解决方案是:
for