问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言调试问题!

发布网友 发布时间:2023-05-07 00:53

我来回答

1个回答

热心网友 时间:2023-11-24 11:59

ungetch()是库函数中的函数,原型是这样的:int ungetch(int);
你自己又定义一个类型返回值类型不一样的,那就不要包含下面这个头文件了嘛:
#include <conio.h>

补充:
搂主,你说的调试不是单步调试吧?编译都有错,根本调试不了。

--------------------Configuration: aaa - Win32 Debug--------------------
Compiling...
b.cpp
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2371: 'ungetch' : redefinition; different basic types
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(81) : error C2137: empty character constant
E:\MYDOC\VC6\aaa\b.cpp(111) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
Error executing cl.exe.

b.obj - 4 error(s), 0 warning(s)

能编译通过的如下,修改了两处:
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h> //自己定义了函数库中的函数,就不要使用函数库了

#define MAXOP 100
#define NUMBER '0'

int getop(char []);
void push(double);
double pop(void);

main()
{
int type;
double op2;
char s[MAXOP];

while ((type=getop(s))!=EOF) {
switch(type) {
case NUMBER:
push(atof(s));
case '+':
push(pop()+pop());
case '*':
push(pop()*pop());
case '-':
op2=pop();
push(pop()-op2);
break;
case '/':
op2=pop();
if(op2!=0.0)
push(pop()/op2);
else
printf("error:zero divisor\n");
break;
case '\n':
printf("\t%.8g\n",pop());
break;
default:
printf("error:unknown command %s\n",s);
break;
}
}
return 0;
}

#define MAXVAL 100
int sp=0;
double val[MAXVAL];

void push(double f)
{
if (sp<MAXVAL)
val[sp++]=f;
else
printf("error:stack fill,can't push %g\n",f);
}

double pop(void)
{
if (sp>0)
return val[--sp];
else {
printf("error: stack empty\n");
return 0.0;
}
}

#include <ctype.h>

int getch(void);
void ungetch(int);

int getop(char s[])
{
int i,c;

while ((s[0]=c=getch())==' '||c=='\t')//注意空格的写法
;
s[1]='\0';
if (!isdigit(c)&&c!='.')
return c;
i=0;
if (isdigit(c))
while (isdigit(s[++i]=c=getch()))
;
if (c=='.')
while (isdigit(s[++i]=c=getch()))
;
s[i]='\0';
if (c!=EOF)
ungetch(c);
return NUMBER;
}

#define BUFSIZE 100

char buf[BUFSIZE];
int bufp=0;

int getch(void)
{
return (bufp>0)?buf[--bufp] :getchar();
}

void ungetch(int c)
{
if(bufp >=BUFSIZE)
printf("ungetch: too many chatacters\n");
else
buf[bufp++]=c;
}

热心网友 时间:2023-11-24 11:59

ungetch()是库函数中的函数,原型是这样的:int ungetch(int);
你自己又定义一个类型返回值类型不一样的,那就不要包含下面这个头文件了嘛:
#include <conio.h>

补充:
搂主,你说的调试不是单步调试吧?编译都有错,根本调试不了。

--------------------Configuration: aaa - Win32 Debug--------------------
Compiling...
b.cpp
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2371: 'ungetch' : redefinition; different basic types
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(81) : error C2137: empty character constant
E:\MYDOC\VC6\aaa\b.cpp(111) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
Error executing cl.exe.

b.obj - 4 error(s), 0 warning(s)

能编译通过的如下,修改了两处:
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h> //自己定义了函数库中的函数,就不要使用函数库了

#define MAXOP 100
#define NUMBER '0'

int getop(char []);
void push(double);
double pop(void);

main()
{
int type;
double op2;
char s[MAXOP];

while ((type=getop(s))!=EOF) {
switch(type) {
case NUMBER:
push(atof(s));
case '+':
push(pop()+pop());
case '*':
push(pop()*pop());
case '-':
op2=pop();
push(pop()-op2);
break;
case '/':
op2=pop();
if(op2!=0.0)
push(pop()/op2);
else
printf("error:zero divisor\n");
break;
case '\n':
printf("\t%.8g\n",pop());
break;
default:
printf("error:unknown command %s\n",s);
break;
}
}
return 0;
}

#define MAXVAL 100
int sp=0;
double val[MAXVAL];

void push(double f)
{
if (sp<MAXVAL)
val[sp++]=f;
else
printf("error:stack fill,can't push %g\n",f);
}

double pop(void)
{
if (sp>0)
return val[--sp];
else {
printf("error: stack empty\n");
return 0.0;
}
}

#include <ctype.h>

int getch(void);
void ungetch(int);

int getop(char s[])
{
int i,c;

while ((s[0]=c=getch())==' '||c=='\t')//注意空格的写法
;
s[1]='\0';
if (!isdigit(c)&&c!='.')
return c;
i=0;
if (isdigit(c))
while (isdigit(s[++i]=c=getch()))
;
if (c=='.')
while (isdigit(s[++i]=c=getch()))
;
s[i]='\0';
if (c!=EOF)
ungetch(c);
return NUMBER;
}

#define BUFSIZE 100

char buf[BUFSIZE];
int bufp=0;

int getch(void)
{
return (bufp>0)?buf[--bufp] :getchar();
}

void ungetch(int c)
{
if(bufp >=BUFSIZE)
printf("ungetch: too many chatacters\n");
else
buf[bufp++]=c;
}

热心网友 时间:2023-11-24 11:59

ungetch()是库函数中的函数,原型是这样的:int ungetch(int);
你自己又定义一个类型返回值类型不一样的,那就不要包含下面这个头文件了嘛:
#include <conio.h>

补充:
搂主,你说的调试不是单步调试吧?编译都有错,根本调试不了。

--------------------Configuration: aaa - Win32 Debug--------------------
Compiling...
b.cpp
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(75) : error C2371: 'ungetch' : redefinition; different basic types
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
E:\MYDOC\VC6\aaa\b.cpp(81) : error C2137: empty character constant
E:\MYDOC\VC6\aaa\b.cpp(111) : error C2556: 'void __cdecl ungetch(int)' : overloaded function differs only by return type from 'int __cdecl ungetch(int)'
c:\program files\microsoft visual studio\vc98\include\conio.h(104) : see declaration of 'ungetch'
Error executing cl.exe.

b.obj - 4 error(s), 0 warning(s)

能编译通过的如下,修改了两处:
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h> //自己定义了函数库中的函数,就不要使用函数库了

#define MAXOP 100
#define NUMBER '0'

int getop(char []);
void push(double);
double pop(void);

main()
{
int type;
double op2;
char s[MAXOP];

while ((type=getop(s))!=EOF) {
switch(type) {
case NUMBER:
push(atof(s));
case '+':
push(pop()+pop());
case '*':
push(pop()*pop());
case '-':
op2=pop();
push(pop()-op2);
break;
case '/':
op2=pop();
if(op2!=0.0)
push(pop()/op2);
else
printf("error:zero divisor\n");
break;
case '\n':
printf("\t%.8g\n",pop());
break;
default:
printf("error:unknown command %s\n",s);
break;
}
}
return 0;
}

#define MAXVAL 100
int sp=0;
double val[MAXVAL];

void push(double f)
{
if (sp<MAXVAL)
val[sp++]=f;
else
printf("error:stack fill,can't push %g\n",f);
}

double pop(void)
{
if (sp>0)
return val[--sp];
else {
printf("error: stack empty\n");
return 0.0;
}
}

#include <ctype.h>

int getch(void);
void ungetch(int);

int getop(char s[])
{
int i,c;

while ((s[0]=c=getch())==' '||c=='\t')//注意空格的写法
;
s[1]='\0';
if (!isdigit(c)&&c!='.')
return c;
i=0;
if (isdigit(c))
while (isdigit(s[++i]=c=getch()))
;
if (c=='.')
while (isdigit(s[++i]=c=getch()))
;
s[i]='\0';
if (c!=EOF)
ungetch(c);
return NUMBER;
}

#define BUFSIZE 100

char buf[BUFSIZE];
int bufp=0;

int getch(void)
{
return (bufp>0)?buf[--bufp] :getchar();
}

void ungetch(int c)
{
if(bufp >=BUFSIZE)
printf("ungetch: too many chatacters\n");
else
buf[bufp++]=c;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
太平盛世专辑曲目 梦见自家灶台缺个角 如何看待宝马3系? - 知乎 为什么缺爱的女人婚姻难幸福快乐 求一些好看的架空言情小说,最好是以第一人称为视角的。小白文请绕。 带双目相机的无人机有哪些 禄莱1982年后 工业3d相机国内有哪些靠谱的厂商,特别是在阳光和弱光环境 海康全新双目单线相机 | 消盲区、抑杂光,引领3D检测新突破 10米范围内实现零盲区大FoV深度测量,奥比中光发布Gemini 2双目... 送女孩子零食 她说很幸福什么意思 卫生应急基地六大能力是指什么 C语言打印图形,错在那? 她说别哭她说好幸福什么意思 社会动员保障是指什么 C 语言 error C2137 c语言。。。出现C2137错误代码 求救。。 香港离岸公司出口到美国,如何获得MID编号? 服装出口加拿大,产地证上客人要求增加MID CODE:输美纺织品登记证号,请问这个是什么? MID是什么?它有什么好处,国内有那些厂在生产MID,价格大概在多少钱!谢谢! MID802174 / MID380701诸如此类以MID开头的各种号码是什么号码呢? 丫st一175蓝牙音箱的蓝牙键在哪里,怎样与手机连结 西昌那里能买到稻壳 崂山附近美食店有哪些 崂山巨峰景区周边好吃的地方 【如何才能让“农家乐”既乐又赚钱】怎样才能开农家乐 高中生喜欢的水果品牌有哪些 德克士咖喱饭和照烧饭热量 日式咖哩鸡肉粗粮饭热量高嘛 咖喱制品卡路里一览表 为什么动员是夺取战争主动权的可靠保障? 四川话天快晚了是不是说天晏(ngan)了?晚点来说成晏(ngan)点来 什么是国防动员?其主要内容包括哪些? 他说别哭她说好幸福什么意思? 提升战略性资源供应保障能力啥意思 和合天下什么意思 和合人心得天下,独断专行景不长 和合人心得天下一言九鼎称君王猜数字 怎么形容桃花的美 求教歌曲名 送检医生是不是就是给病人看病的医生呀? 医院的检察报告为什么送检医生没有全名?就是某某主任,复核员也没签名?而有的医院送检医生却是全名,, 医生这些话是肯定的意思吗? zl行业是什么意思 碧育平台ps5可以登吗 cf 的信仰是什么? 为啥剪刀是破家五鬼? 如何理解电路中用电器会发光 请问基板(电路)会发亮的是什么东西? 请问这种发光电路的原理是什么?应该怎样绘制?怎样制作?