init标示符在gcc编译器中指定将该函数置于内核的特定区域。在内核完成自身
创新互联服务项目包括任丘网站建设、任丘网站制作、任丘网页制作以及任丘网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,任丘网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到任丘省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
初始化之后,就试图释放这个特定区域。实际上,内核中存在两个这样的区域,
.text.init和.data.init—第一个是代码初始化使用的,另外一个是数据初始化使用的(
可以在进程间共享的代码和字符串常量之类的“文本(Text)”是在可执行程序中的“纯
区域”中使用的一个术语)。另外你也可以看到__initfunc和__initdata标志,前者和
__init类似,标志初始化专用代码,后者则标志初始化专用数据。
兄弟,大概看了一下,能看出你应该是个新手,有一定基础,但也有很多问题。你的代码是否实现了功能我没仔细看,但是问题我还是说一下:
1.编程风格。编程的风格有很多种,但是至少要遵循一些基本原则:
a.书写工整,每句一行;
b.尽管程序小,但是函数和变量命名仍然要遵循匈牙利规则,这个很重要;
c.正确使用缩进;
d.if、for、switch、case等语句也要每句一行,每个分支都用括号括起,哪怕只有一句;
2.字符串操作错误,字符串不能直接复制,需要用str_cpy等函数copy,建议多看看相关知识,其实并不复杂。
3.对于全局变量的把握,从你这个功能来讲,其实没有必要象你这样定义全局变量,不仅浪费,而且限制了数据的数量。
4.所有的函数都没有参数和返回值(其实这个和你用全局变量的方法有一定关系),建议重写。
5.良好的初值习惯。每定义一个变量都要赋初值,定义变量每行只定义一个。
6.case 3:void srt();break; 这种函数的调用没必要也不能加void,具体你去看书
大概说了一点,时间有限。更多的需要你自己去看,去调试,你这个代码一定编译不过,写的时候至少要先编译通过,如果不是自己需要的结果再跟踪调试一下。
read内部是调_read, _read的返回值在msdn中有这样的描述
_read returns the number of bytes read, which might be less than count if there are fewer than count bytes left in the file or if the file was opened in text mode, in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character. Only the single linefeed character is counted in the return value. The replacement does not affect the file pointer.
注意这一段: in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character
就是说如果用text模式打开的话, 文件换行时可能在文本中有2个字符----换行和缩进(CR-LF), 而在return的时候系统是把它作为1个回车符号('\n')所返回的. 所以会导致这个情况
先申明,在使用,C函数都是这种的,mian函数前面申明下子函数就行了。~
实现病历查询功能的代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include string.h
#include stdlib.h
//病人结构体
struct patient
{
char patientNum[20]; //病例号
char patientName[20]; //病人姓名
char patientInfo[20]; //病例
}myPatient[5] = {"","",""};
//输入函数
void readin(patient *p)//输入
{
printf("请输入5个病人的:病号,姓名,病例:\n");
for (int i = 0; i 5; i++)
{
printf("请输入第%d位病人信息:\n", i + 1);
scanf("%s%s%s", p[i].patientNum, p[i].patientName, p[i].patientInfo);
}
}
//查询函数
void search(patient *p, char *x)
{
int i;
for ( i= 0; i 5; i++)
{
if (strcmp(x, p[i].patientName) == 0)
break;
}
if (i == 5)
printf("查无此人\n");
else
{
printf("病号\t\t姓名\t\t病例\n");
printf("%s\t\t%s\t\t%s", p[i].patientNum, p[i].patientName, p[i].patientInfo);
}
}
//点我头像,入群.
int main()
{
readin(myPatient);
char searchName[20];
while (1)
{
printf("请输入要查询的病人姓名:\n");
scanf("%s", searchName);
search(myPatient, searchName);
printf("是否继续查询?(y/n)\n");
fflush(stdin);
int choice = getchar();
if (choice == 'n' || choice == 'N')
break;
}
return 0;
}
运行效果如下: