如何使用 Windows conio.h 将代码移植到 Linux?
我为 Win32/c 编译器编写了这个 C 程序,但是当我尝试在 Linux 机器或 codepad.org 中使用 gcc 运行它时,它显示“conio.h:没有这样的文件或目录编译终止”要执行哪些修改该程序不包含任何其他新包含项,例如curses.h
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j=0,k=0,n,u=0;
char s[100],c2,c[10];
char c1[3]={'a','b','c'};
clrscr();
printf("no of test cases:");
scanf("%d",&n);
for(u=0;u<n;u++)
{
printf("Enter the string:");
scanf("%s",s);
i=0;
while(s[i]!='\0')
{
if(s[i+1]=='\0')
break;
if(s[i]!=s[i+1])
{
for(j=0;j<3;j++)
{
if((s[i]!=c1[j])&&(s[i+1]!=c1[j]))
{
c2=c1[j];
}
}
s[i]=c2;
for(k=i+1;k<100;k++)
{
s[k]=s[k+1];
}
i=0;
}
else
i++;
}
c[u]=strlen(s);
}
for(u=0;u<n;u++)
printf("%d\n",c[u]);
getch();
}
I wrote this C program for Win32/c compiler but while i'm trying run this using gcc in Linux machine or codepad.org it shows 'conio.h: No such file or directory compilation terminated' What are modification to be done to execute this program without including any other new includes like curses.h
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j=0,k=0,n,u=0;
char s[100],c2,c[10];
char c1[3]={'a','b','c'};
clrscr();
printf("no of test cases:");
scanf("%d",&n);
for(u=0;u<n;u++)
{
printf("Enter the string:");
scanf("%s",s);
i=0;
while(s[i]!='\0')
{
if(s[i+1]=='\0')
break;
if(s[i]!=s[i+1])
{
for(j=0;j<3;j++)
{
if((s[i]!=c1[j])&&(s[i+1]!=c1[j]))
{
c2=c1[j];
}
}
s[i]=c2;
for(k=i+1;k<100;k++)
{
s[k]=s[k+1];
}
i=0;
}
else
i++;
}
c[u]=strlen(s);
}
for(u=0;u<n;u++)
printf("%d\n",c[u]);
getch();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我没有看你的代码来看看它是否需要这三个函数。但这是获取它们的最简单方法。通常有比使用 getch() 更好的方法。当你清除我的屏幕时,clrscr() 也没有什么乐趣!
getch()
I did not look at your code to see if it needs the three functions. But this is the simplist way to get them. There is normaly a better way than using getch(). clrscr() is also no fun when you clear my screen !
getch()
看起来您在
conio.h
中使用的唯一函数是clrscr()
和getch()
。只要把它们拿出来就应该没问题——它们似乎不会影响程序的运行。它们在这里的使用更像是 Windows 终端行为的解决方法。一些注意事项:
main()
应该返回int
。strlen()
在string.h
中定义 - 您可能需要包含它。It looks like the only functions you're using from
conio.h
areclrscr()
andgetch()
. Just take those out and you should be fine - they don't appear to affect the operation of the program. They're being used here more like workarounds for windows terminal behaviour.A couple of notes:
main()
should returnint
.strlen()
is defined instring.h
- you'll probably want to include that.回顾你的问题,我可以看到对于 clrscr() 和 getch() 你正在使用 conio.h 但这个头在 gcc 中不可用。因此,对于 clrscr 的使用
以及您提到的 getch() ,请使用curses库
干杯!
Reviewing your question I can see that for clrscr() and getch() you are using conio.h But this header is not available in gcc. So for clrscr use
and as you have mentioned for getch() use the curses library
Cheers !!