#include <stdio.h>
#include <string.h>
#define SIZE 100
int num=0
struct member_type
{
char name[10]
int id
int age
char addr[15]
}mem[SIZE]
void minput()
{
FILE *fp /*早期的C编译器必须在函数开头声明变量,把fp和i移到开头*/
int i
char ch
while(1)
{
printf("请输入职员相关信息:\n")
printf("职员ID:")
scanf("%d",&mem[num].id)
printf("\n")
printf("职员姓名:")
scanf("%s",&mem[num].name)
printf("\n")
printf("职员年龄:")
scanf("%d",&mem[num].age)
printf("\n")
printf("职员地址:")
scanf("%s",&mem[num].addr)
printf("\n")
num++
getchar()
printf("是否继续录入职员信息?(Y/N)\n")
ch = getchar()
if (ch =='n' || ch =='N')
{
break
}
}
if ((fp=fopen("member.dat","wb"))==NULL)
{
return
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("出错了,无法写入文件!\n")
}
for (i=0i<numi++)
{
if (fwrite(&mem[i],sizeof(struct member_type),1,fp)!=1)
{
printf("出错了,无法写入文件!\n")
}
}
fclose(fp)
}
void moutput()
{
FILE *fp
int i
if ((fp=fopen("member.dat","rb"))==NULL)
{
printf("出错了,无法打开文件!\n")
return
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1
}
else
{
for(i=0i<numi++)
{
fread(&mem[i],sizeof(struct member_type),1,fp)
printf("%s 的职员ID为 %d 年龄为 %d 地址为 %s\n",mem[i].name,mem[i].id,mem[i].age,mem[i].addr)
}
}
fclose(fp)
}
int main()
{
int xuhao
void minput()
void moutput()
while(1)
{
printf("=========企业职员信息管理程序===========\n")
printf("1,输入职员信息\n")
printf("2,查看已录入职员信息\n")
printf("3,退出本程序\n")
printf("请输入要执行的 *** 作前面的序号:")
scanf("%d",&xuhao)
switch(xuhao)
{
case 1:minput()
break
case 2:moutput()
break
case 3:return 0
}
}
return 0
}
首先,得把关于或者涉及C++语法及库调用的地方改为C风格其次,把文件扩展名改为C.
关键是程序内容.大部分C++程序都可以改为纯C程序.
但少数涉及C++库用法或算法的就有点难了.
最简单的,
比如一个 char *p =new char[10]
这样一句,在C++中,属于动态定义数组char数组.
改为C的话,静态倒好办,改为动态就得用malloc函数了,差得有点远哦....
掌握C++和C的程序员改,估计还行.只懂C和普通懂C++的,估计有点难度.
又比如:
队列的使用 C++中有用 list<string>ls,就是定义了一个内容为string的不定数组ls,而这个,要改为C,真的要做很功夫哦..........
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)