我已经运行了这个程序,下面是我的输入和输出:
a b g
^Z
the counts of blanks are: 1,the counts of tabs are: 1,the counts of newlines are
: 1,the lastchar is: 10
g: 103
char type of lastchar is:
Press any key to continue
我的问题是我认为我的lastchar是'但是为什么当我输出lastchar时我得到10,为什么当我直接输出' g时为什么我得到103?更进一步,当我输出lastchar的char(%c)类型时,为什么我什么都没得到?
#include<stdio.h>
#include<conio.h>
int main(void)
{
int blanks=0,tabs=0,newlines=0;
int c;
int done=0;
int lastchar=0;
while((c=getchar())!=EOF)
{
if(c==' ')
{
blanks++;
}
if(c=='\t')
{
tabs++;
}
if(c=='\n')
{
newlines++;
}
lastchar=c;
}
char tt='g';
if(lastchar!='\n')
{
newlines++;
}
printf("the counts of blanks are: %d,the counts of tabs are: %d,the counts of newlines are: %d,the lastchar is: %4.0d\n",blanks,tabs,newlines,lastchar);
printf("g: %d\n",'g');
printf("char type of lastchar is: %c\n",lastchar);
return 0;
}
答案 0 :(得分:2)
这里:
printf("g: %d\n",'g');
您要求printf()
输出'g'
的数字表示(很可能是ASCII),即103。
下面:
printf("char type of lastchar is: %c\n",lastchar);
您要求printf()
输出lastchar
作为字符。由于数值是10,这是换行符,因此换行符是不可打印的字符。