我在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'
正在做同样的工作。
有人可以解释一下标签,空格,空白,空白,换页和垂直标签之间的区别吗?
答案 0 :(得分:2)
空格和标签在ASCII中有不同的表示形式。 &lt;空&GT;是0x20,而&lt; tab&gt;是0x09。当程序检查当前字符时,需要测试两种可能性。
另外值得注意的是,他们使用的newline字符是'\ n',这是“Line Feed”,Unix / Linux / BSD的传统换行符。在Windows上,典型的换行符由“\ r \ n”或CRLF(“回车符”和“换行符”)表示。
我不知道像“垂直标签”这样的字符使用得太多了。许多“控制角色”可以追溯到他们习惯于给打印机提供如何移动头部的指示。
答案 1 :(得分:1)
他们有不同的内部代码和含义。例如,'\t'
的内部代码等于9,而空格' '
的内部代码为32,而EBCDIC为64
。有些程序可以用tab替换一些空格。试试以下代码
#include <stdio.h>
int main()
{
printf( "From here" " " "to here\n" );
printf( "From here" "\t" "to here\n" );
}
并比较两次printf调用的输出。
答案 2 :(得分:0)
Space和whitespace都有相同的含义。 垂直(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;
}
上面的代码会给你一些粗略的想法。
但是,检查空间时检查水平标签的条件是好的。