C++大神们帮忙看下程序哪里出问题了(统计空格制表符和换行符的个数),输入结束时按ctrl+z没反应

//待解决
#include<iostream>#include<string>
using namespace std;
void main()
{
char s;
int space=0,table=0,enter=0;
cout<<"Please input a string:"<<endl;
cin>>s;
while(s!=EOF)
{
switch(s)
{
case 32:space++;break;
case 9:table++;break;
case 10:enter++;break;
default:break;
}
cin>>s;
}
cout<<"The numbers of the SPACE is:"<<space<<endl;
cout<<"The numbers of the TABLE is:"<<table<<endl;
cout<<"The numbers of the ENTER is:"<<enter<<endl;
getchar();
}

第1个回答  2013-04-16
定义的类型有问题 char 只是1个字符长度,你输入一行数据回车后其实它只接受到了第一个字符 就是f
然后ctrl+z 用断点跟踪值为-52 EOF的值是-1
第2个回答  2013-04-16
你的eof符就没有输入进去,要在新的一行输入ctrl+z追问

不明白,怎么做输入呢?本人菜鸟,ctrl z不就表示eof 吗?

追答

1.输入ctrl+z要在一行开始,也就是你打完回车之后
2.结束判断不能用你那个要用while(!cin.eof())
3如果你使用getchar()输入,那么你那样判断没问题。
2,3判断方式不同可能是因为cin在c++中的流封装形式的问题

追问

还是不行,能不能帮我在原来的代码上改改,把改后的代码拷给我看看,麻烦了,谢谢大神。

追答

#include
#include
using namespace std;
void main()
{
char s;
int space=0,table=0,enter=0;
cout<<"Please input a string:"<<endl;
s=getchar();
while(s!=EOF)
{
switch(s)
{
case 32:space++;break;
case 9:table++;break;
case 10:enter++;break;
default:break;
}
s=getchar();
}
cout<<"The numbers of the SPACE is:"<<space<<endl;
cout<<"The numbers of the TABLE is:"<<table<<endl;
cout<<"The numbers of the ENTER is:"<<enter<<endl;
}
cin不识别空格之类的符号,我之前没看你的代码内容,都没注意这个问题。改成getchar读数就好了,记得ctrl+z要在新的一行输入

本回答被提问者采纳

C++大神们帮忙看下程序哪里出问题了(统计空格制表符和换行符的个数...
定义的类型有问题 char 只是1个字符长度,你输入一行数据回车后其实它只接受到了第一个字符 就是f 然后ctrl+z 用断点跟踪值为-52 EOF的值是-1

编写一个统计空格,制表符与换行符个数的程序.我编译的怎么会是这个结果...
while((c=getchar())!=EOF){ 这一行改成 while((a=getchar()!=eof){

c语言初学者,统计空格、制表符和换行符个数程序问题
include <stdio.h>int main(void){int a=0,b=0,c=0;char ch;while((ch=getchar())!=EOF){if(ch==' ')a++;else if(ch=='\\t')b++;else if(ch=='\\n')c++;}printf("%d\\n%d\\n%d",a,b,c);return 0;}windows系统默认 ctrl+z 是终止符 ...

关于C语言的问题,编译一个程序,统计输入的空格符、制表符和回车符的...
程序里不少错误我就不说了,你编译的时候会有错误提示的。就你的if和while来说,if跟着的条件是先判定且只判定一次,while更着的条件是多次判定,直到判定为False

C++中有关水平制表符的问题
制表符相当于键盘上按下TAB键之间的距离,也称为空白符。!!!空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用, 编译程序对它们忽略。!!!因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。

c语言编写一个统计空格、制表符与换行符个数的程序
int a,b,c,d; \/*b代表空格,c代表制表符,d代表换行符*\/ b=0;c=0;d=0; \/*intilized*\/ while ((a = getchar()) != EOF){ if (a ==' ')\/\/这里是输入的a进行比较,不是bcd。不然就一直是0了 b++;if (a == '\\t')c++;if (a == '\\n')d++;} printf("空格%3d...

编写一个统计空格、制表符与换行符个数的程序
hs = 0,kgs=0,zfbs=0; \/* 初始化 *\/ while((c = getchar()) != '#'){ if(c == '\\n')++hs;if(c == ' ')++kgs;if(c == '\\t')++zfbs;} printf("%d %d %d\\n",hs,kgs,zfbs); \/* zbfs改为zfbs *\/ } \/* nl,cl,bl 可能是代表行数,空格数,制表符数的...

c++从键盘上输入一串字符,统计其中字母字符,数字字符,其他
在C++编程中,使用istream类的get()成员函数从键盘输入一串字符时,可以对输入数据进行分类统计。首先,了解get()函数的基本用法,其原型为int get();此函数从输入流读入一个字符,返回值为字符的ASCII码。当读取到输入流结束时,返回值为EOF,即End of File的缩写,其值为-1。在实际应用中,get()...

统计空格、制表符与换行符个数的程序
if (c == "\\n")改为 if (c == '\\n')

C++怎么输入空白字符,比如:换行符,空格,制表符
换行是 '\\n'空格 " "制表 '\\t'

相似回答