C语言头文件的作用(示例)

来源:互联网 发布:mac系统读写ntfs 编辑:程序博客网 时间:2024/05/16 00:24

读http://www.cublog.cn/u2/75758/showart_1715158.html

有感

helper.h

#ifdef T1
int g_year = 2010;
#else
int g_year;
#endif

int GetTicket();

 

helper.c

#include "helper.h"
int GetTicket(){

    return g_year;
}

 

util.h

#ifdef T1
int g_year = 1020;
#else
int g_year;
#endif

int SetTicket();
extern int GetTicket();

 

util.c

#define T1
#include "util.h"


int SetTicket(){
    g_year = 700;
    return g_year;
}

 

 

mail.c

 

#include <stdio.h>
#include <stdlib.h>
#include "util.h"
int main()
{
    printf("头文件中定义/n");

    printf("GetTicket=%d",GetTicket());
    printf("/nSetTicket=%d",SetTicket());
    printf("GetTicket=%d",GetTicket());

    return 0;
}

 

 

 

getch()和getche()函数
    这两个函数都是从键盘上读入一个字符,即时读入,不需先读入缓冲区。。其调用格式为:
  getch();
  getche();
 两者的区别是:getch()函数不将读入的字符回显在显示屏幕上,而getche() 函数却将读入的字符回显到显示屏幕上。

getchar()函数
 getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数的区别在于: getchar()函数,只有当你按下回车键才从缓冲区读入字符,并且会将回车键也读入。

 

scanf会被跳过的问题

解决方法最好不用FFLUSH,因为不同的编译器可能不兼容

 

while(1){

        IsInputNum = scanf("%d",&LoginPwd);
        //当输入数字时,scanf直接从内存缓冲区中读取
        //当输入字符,因类型不配置scanf返回0,输入字符进入内存缓冲区;
        //下次scanf会从内存缓冲区取值(取得字符),因类型不配置scanf返回0,会造成死循环
        //while ( (cache= getchar()) != '/n' &&cache != EOF ) ;
        //作用是在输入字符后取出内存缓冲区中的所有字符,当取到回车符表示内存缓冲区已清空
        // '/n' 的ASCII值为10
        //例:输入  1AB,变量取值为IsInputNum=0,cache=65/66/10

        while ( (cache= getchar()) != '/n' &&cache != EOF ) ;


        if( IsInputNum == 0 || 1121987 != LoginPwd){
            printf("登录密码错误!/n/n");
            printf("请输入你的登录密码:");
            continue;
        }
        break;
    }

 

 

    或改成下面这样就不会有scanf格式化串与输入的类型不一致问题

    char LoginPwd[10];
    while(1){

        scanf("%s",LoginPwd);
        if( strcmp(LoginPwd,"1987") != 0 ){
            printf("登录密码错误!/n/n");
            printf("请输入你的登录密码:");
            continue;
        }
        break;
    }

 

 

 

 

 

 

 

 

原创粉丝点击