C语言,"conio.h"头文件是啥?是干啥用的?都有啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,"conio.h"头文件是啥?是干啥用的?都有啥?相关的知识,希望对你有一定的参考价值。

这貌似是一个提供清除屏幕显示的头文件,不过这不是一个c的标准库,工作不稳定,有时会出错,所以强烈不推荐使用 参考技术A "conio.h"头文件是 控制台输入输出函数头文件。con 是控制台Console英文缩写,io是 Input/Output 输入输出。它不属于C语言标准库。
它定义了通过控制台进行数据输入和数据输出的函数,例如 键盘输入,屏幕输出。它是早期C语言用的输入输出函数库。除了个别函数以外,现在基本不用(而用标准库 stdio.h)。
可能用的函数是 getch(); 和 kbhit(void);
getch(); 用于瞬时读取按下的键,(不等待回车换行键的到来)。
kbhit(void); 用于瞬时检查 是否有按键动作。其它函数很少用到。
函数有:
cgets(char *);
cprintf(const char *, ...);
cputs(const char *);
cscanf(const char *, ...);
inp(unsigned short);
inpw(unsigned short);
getch(void);
getche(void);
kbhit(void);
outp(unsigned short, int);
outpw(unsigned short, unsigned short);
putch(int);
ungetch(int);
void _Cdecl clreol (void);
void _Cdecl clrscr (void);
void _Cdecl delline (void);
int _Cdecl gettext (int left, int top, int right, int bottom,
void *destin);
void _Cdecl gettextinfo (struct text_info *r);
void _Cdecl gotoxy (int x, int y);
void _Cdecl highvideo (void);
void _Cdecl insline (void);
void _Cdecl lowvideo (void);
int _Cdecl movetext (int left, int top, int right, int bottom,
int destleft, int desttop);
void _Cdecl normvideo (void);
int _Cdecl puttext (int left, int top, int right, int bottom,
void *source);
void _Cdecl textattr (int newattr);
void _Cdecl textbackground (int newcolor);
void _Cdecl textcolor (int newcolor);
void _Cdecl textmode (int newmode);
int _Cdecl wherex (void);
int _Cdecl wherey (void);
void _Cdecl window (int left, int top, int right, int bottom);
char *_Cdecl cgets (char *str);
int _Cdecl cprintf (const char *format, ...);
int _Cdecl cputs (const char *str);
int _Cdecl cscanf (const char *format, ...);
int _Cdecl getch (void);
int _Cdecl getche (void);
char *_Cdecl getpass (const char *prompt);
int _Cdecl kbhit (void);
int _Cdecl putch (int c);
int _Cdecl ungetch (int ch);本回答被提问者采纳

C语言结构体数组写入文件的问题

#include"stdio.h"
#include"conio.h"
#include"stdlib.h"

struct node

int a;
char b[2];
;

main()

FILE *p;
char ch;
int i=0,len=sizeof(struct node);
struct node stu[2];
char temp[2];
for(i=0;i<2;i++)

printf("information:\n");
gets(temp);
stu[i].a=atoi(temp);
gets(stu[i].b);
//输入结构体数组
for(i=0;i<2;i++)

printf("%d %s\n",stu[i].a,stu[i].b);
//检查是否输入成功
if(stu[0].a>stu[0].a)
printf("A\n");
else printf("B\n");//判断大小,无关问题
if((p=fopen("d:\\tex.txt","w+"))==NULL)//打开文件
printf("ERROR\n");
else

for(i=0;i<2;i++)
fwrite(&stu[i],sizeof(struct node),1,p);
//将结构体写入文件
fclose(p);

if((p=fopen("tex.txt","r"))==NULL)
printf("ERROR\n");
else

while((ch=fgetc(p))!=EOF)
putchar(ch);
fclose(p);
//输出文件信息



请高手帮我看看我文件写入是否有问题
为什么我数组输入是正确的 但是一写入文件就成了乱码
读出来也是乱码。。。
我把b的字符改成了12位 然后输入的时候就有错了
貌似写入文件不足结构体长度的部分就用乱码被替代了
请问有什么方法可以解决么???
错误如下:
12dasda 烫烫烫烫?2dasdasd 烫烫烫

参考技术A 读的时候 路径不对。。还有就是写入的文件是以字符的形式写入的。所以int型要转一下。。
具体如下
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"

struct node

int a;
char b[2];
;

main()

FILE *p;
char ch;
int i=0,len=sizeof(struct node);
struct node stu[2];
char temp[2];
for(i=0;i<2;i++)

printf("information:\n");
gets(temp);
stu[i].a=atoi(temp);
gets(stu[i].b);
//输入结构体数组
for(i=0;i<2;i++)

printf("%d %s\n",stu[i].a,stu[i].b);
//检查是否输入成功
if(stu[0].a>stu[0].a)
printf("A\n");
else printf("B\n");//判断大小,无关问题
if((p=fopen("d:\\tex.txt","w+"))==NULL)//打开文件
printf("ERROR\n");
else

for(i=0;i<2;i++)

itoa(stu[i].a, temp, 10); //转为字符写入
fwrite(temp,sizeof(temp),1,p);
fwrite(stu[i].b,sizeof(stu[i].b),1,p);

//将结构体写入文件
fclose(p);

if((p=fopen("d:\\tex.txt","r"))==NULL)
printf("ERROR\n");
else

while((ch=fgetc(p))!=EOF)
putchar(ch);

fclose(p);
//输出文件信息


ps:读出来的时候也要考虑下,把他转为整形本回答被提问者采纳
参考技术B #include"stdio.h"
#include"conio.h"
#include"stdlib.h"

struct node

int a;
char b[2];
;

main()

FILE *p;
char ch;
int i=0,len=sizeof(struct node);
struct node stu[2];
char temp[2];
for(i=0;i<2;i++)

printf("information:\n");
gets(temp);
stu[i].a=atoi(temp);
gets(stu[i].b);
//输入结构体数组
for(i=0;i<2;i++)

printf("%d %s\n",stu[i].a,stu[i].b);
//检查是否输入成功
if(stu[0].a>stu[0].a)
printf("A\n");
else printf("B\n");//判断大小,无关问题
if((p=fopen("d:\\tex.txt","w+"))==NULL)//打开文件
printf("ERROR\n");
else

for(i=0;i<2;i++)

itoa(stu[i].a, temp, 10); //转为字符写入
fwrite(temp,sizeof(temp),1,p);
fwrite(stu[i].b,sizeof(stu[i].b),1,p);

//将结构体写入文件
fclose(p);

if((p=fopen("d:\\tex.txt","r"))==NULL)
printf("ERROR\n");
else

while((ch=fgetc(p))!=EOF)
putchar(ch);

fclose(p);
//输出文件信息
参考技术C C语言把一个结构体数组写入文件分三步:

1、以二进制写方式(wb)打开文件

2、调用写入函数fwrite()将结构体数据写入文件

3、关闭文件指针

相应的,读文件也要与之匹配:

1、以二进制读方式(rb)打开文件

2、调用读文件函数fread()读取文件中的数据到结构体变量

3、关闭文件指针

参考代码如下:

#include<stdio.h>
struct stu
char name[30];
int age;
double score;
;
int read_file();
int write_file();
int main()

if ( write_file() < 0 ) //将结构体数据写入文件
return -1;
read_file(); //读文件,并显示数据
return 0;


int write_file()

FILE *fp=NULL;
struct stu student="zhang san", 18, 99.5;
fp=fopen( "stu.dat", "wb" ); //b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息

printf("open file for write error\n");
return -1;

fwrite( &student, sizeof(struct stu), 1, fp ); //向文件中写入数据
fclose(fp);//关闭文件
return 0;


int read_file()

FILE *fp=NULL;
struct stu student;
fp=fopen( "stu.dat", "rb" );//b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息

printf("open file for read error\n");
return -1;

fread( &student, sizeof(struct stu), 1, fp ); //读文件中数据到结构体
printf("name=\"%s\" age=%d score=%.2lf\n", student.name, student.age, student.score ); //显示结构体中的数据
fclose(fp);//关闭文件
return 0;


fwrite(const void*buffer,size_t size,size_t count,FILE*stream);

(1)buffer:指向结构体的指针(数据首地址)
(2)size:一个数据项的大小(一般为结构体大小)
(3)count: 要写入的数据项的个数,即size的个数
(4)stream:文件指针。
参考技术D 新建 C语言 高手 QQ群号 72873923

以上是关于C语言,"conio.h"头文件是啥?是干啥用的?都有啥?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 集合运算

关于C语言程序代码加颜色的问题!

学生信息管理系统(C语言版)

c语言 清屏函数

c语言链表问题

关于C语言课题设计(学生信息管理系统)