标题:布尔变量,书本上的题目,因编译器没有头文件<stdbool.h>,自定义了 bool, ...
只看楼主
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
结帖率:100%
已结贴  问题点数:14 回复次数:5 
布尔变量,书本上的题目,因编译器没有头文件<stdbool.h>,自定义了 bool,结果编译没法通过。大家帮忙看看问题在哪里?还有倒数第四行那个不
#include<stdio.h>
#include<ctype.h>//isspace()原型//
//#include<stdbool.h>//为bool,ture,false提供定义//
#define STOP '|'
#define bool int inword
#define true 1
#define false 0

main(void)
{
   char c;//读入字符//
   char prev;//前一个读入字符//
   long n_chars=0l;//字符数//
   int n_lines=0;//行数//
   int n_words=0;//单词数//
   int p_lines=0;//不完整行数//

   int inword=false;//单词的开始处//

   printf("请输入单词以统计("STOP"终止输入:\n)");

   prev='\n';//用于识别完整的行//

   while((c=getchar())!=STOP)
   {
      n_chars++;
      if(c=='\n')
          n_lines++;
      if(!isspace(c)&&(inword=false))
      {
        inword=true;//开始新单词//
            n_words++;//统计//
      }

      if(isspace(c)&&(inword=true))//如果是空白字符而且是在单词中间//
          inword=false;//到达单词尾部//
          prev=c;//保存字符值//
   }

   if(prev!='\n')//前一个字符不是换行符//
       p_lines=1;//非完整行//
   printf("字符数共%ld个,单词共%d个,共%d行,不完整行数共%d行.\n",n_chars,n_words,n_lines,p_lines);


  return 0;

}
搜索更多相关主题的帖子: include 编译器 false 布尔 倒数 
2014-06-10 07:52
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:8 
printf("请输入单词以统计(STOP终止输入:\n)");

 printf("请输入单词以统计("STOP"终止输入:\n)");

DO IT YOURSELF !
2014-06-10 08:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
编译器没有头文件<stdbool.h>
------ 那你就去找个支持C的编译器,为什么要在一个不支持C的编译器上瞎折腾?

结果编译没法通过
------ 编译没通过就应该贴出编译器给出的错误信息,你总不至于让别人用肉眼给你编译吧?

另外,你的代码错误太多,且乱得不知道你想实现什么功能
比如 #define bool int inword 你这是什么意思,是将 bool 定义为 int inword 吗?
if(!isspace(c)&&(inword=false)) 这又是什么意思
2014-06-10 08:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:2 
我记得几天前回答过一次

https://bbs.bccn.net/thread-432287-1-4.html
2014-06-10 09:02
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
得分:0 
回复 3 楼 rjsp
--------------------Configuration: counter - Win32 Debug--------------------
Compiling...
counter.c
C:\Program Files\Microsoft Visual Studio\MyProjects\counter\counter.c(20) : error C2143: syntax error : missing ')' before 'constant'
C:\Program Files\Microsoft Visual Studio\MyProjects\counter\counter.c(20) : error C2059: syntax error : ')'
执行 cl.exe 时出错.

counter.exe - 1 error(s), 0 warning(s)

很抱歉我说得不够详细。。原本是想统计一段文章一共输入的字符数和单词数等等。以上是错误信息,二楼找出来了,修改了之后可以运行。原代码是包含<stdbool.h>的,因为我的编译器没有这个文件,所以才有#define bool int inword(不知格式对不对),我是希望将inword作为0和1之间的转换,用来判断输入的字符是不是在单词之中(是的话为1,否则为0),比如if(!isspace(c)&&(inword=false))这里,如果输入的字符不是空字符并且不在单词之中,那么就是一个新单词的开始。

其实我主要是想知道在编译器没有<stdbool.h>的情况下,可以怎样修改原来包含<stdbool.h>的代码让程序运行。你说得对,找一个包含布尔的编译器确实节省很多时间。但我底子薄,还是希望能多了解一些。感谢您的帮助
2014-06-10 13:26
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
得分:0 
回复 2 楼 wp231957
问题确实在这里。修改之后编译通过,虽然还有很多瑕疵要改。谢谢啊!
2014-06-10 13:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-432709-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.178043 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved