我在 Ritchie 和 kernighan C 中发现了以下代码,用于计数。的话..
#include<stdio.h>
#define IN 1
#define OUT 0
main()
{
int c,n1,nw,nc,state;
state = OUT;
n1 =nw = nc = 0;
while((c = getchar())!=EOF)
{
++nc;
if(c == '\n')
++n1;
if(c == ' '||c == '\n' ||c == '\t')
state = OUT;
else if(state == OUT)
{
state = IN;
++nw;
}
}
printf("%d %d %d\n",n1,nw,nc);
}
我猜这里
c == ' '
和 c == '\t'
正在做同样的工作。
有人可以解释一下制表符、空格、空白、空白、换页符和垂直制表符之间的区别吗?
它们有不同的内部代码和含义。例如,
'\t'
的内码等于 9,而空格 ' '
在 ASCII 中的内码为 32,在 EBCDIC 中的 64
的内码。有些程序可以用制表符代替一定数量的空格。例如尝试以下代码
#include <stdio.h>
int main()
{
printf( "From here" " " "to here\n" );
printf( "From here" "\t" "to here\n" );
}
并比较两次 printf 调用的输出。
空格和空白具有相同的含义。 垂直(dec 11)和水平(dec 9)选项卡描述了它们本身的含义。这些是文件格式化时最常用的字符。考虑下面的代码。
#include<stdio.h>
int main()
{
int i =0;
int a[] = {97,32,98,9,65,10,66,11,67};
while(i<9)
printf("%c",a[i++]);
return 0;
}
上面的代码会给你一些粗略的想法。
但是,最好在检查空间的同时检查水平制表符的情况。
在空白下,所有的东西都来了: