C语言小笔记

 头文件的书写

头文件实现函数声明,在使用模板后可以实现一个C文件中即使重复包含某个头文件,在系统中用于只会确认为一个包含

头文件包含可以理解为将头文件内容替换#include“...”行

模板(dong.h):

#ifndef _DONG_H_
#define _DONG_H_

//其它内容

#endif

 编译工具的使用

C语言(gcc)、C++语言(g++)

编译默认输出a.out文件

gcc *
gcc *.c

重命名输出文件

gcc test.c -o newexe

C文件间共享变量

extern

extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。

举个栗子:

C1.h,声明函数c1fun()

#ifndef _C1_H_
#define _C1_H_
void c1fun(char *strx);
#endif

C1.c,实现函数c1fun()

#include<stdio.h>
#include"c1.h"
char *wu;
void c1fun(char *strx){
   wu=strx;
}

Main.c,调用函数c1fun(),并读取外部变量wu的值

#include <stdio.h>
#include "c1.h"
extern char *wu;
void main(){
   c1fun("123456");
   printf("===:%s",wu);//输出:123456
}

#define

针对不改变的量,可以在头文件中声明,在其他c文件中包含即可使用

如c1.h中:

#define DONG "dongxiaodong"

Mian.c中:

#include"c1.h"
……
printf("===:%s",DONG);
…….

命令行传递参数

#include<stdio.h>
int main(int vsize,char *vch[]) 
{ 
int i=1;
for(i=1;i<vsize;i++)
   printf("%d=>%s\n",i,vch[i]);
return 0; 
}

输入和输出

scanf()输入

返回值1为失败,2为正确

int a, b;
printf("请输入两个整数,用空格隔开:");
// scanf("%d,%d", &a, &b);//逗号分隔
// scanf("%d-%d", &a, &b);//减号分隔
int i=scanf("%d%d", &a, &b);
printf("%d,%d,%d", a, b,i);

printf("请输入两个整数,用逗号分隔:");
scanf("%d,%d", &a, &b);
printf("%d,%d", a, b);

printf()输出

printf("dongxiaodong %d \n", 100);//格式化输出

printf("东小东\n");//直接输出内容

相关输出百分号意义:

%d          正常输出整数,仅占有本身大小位置

%5d        整数位数不足5(起始为1),前面自动补空,超出则与%d相同

%-5d       整数位数不足5,后面补空,超出则与%d相同

%f,%F  浮点型(float)输出,默认6位小数位,超出则四舍五入

%lf          双精度浮点型(double)

%15f       浮点数总长最小为15,不足则前面补空

%-15f      浮点数总长最小为15,不足则后面补空

%3.2f      前面数组3与上两个解释一样,小数点后的2表示小数位最大为2位,多则四舍五入,少则补零

%c          单个字符

%s          字符串

%p          指针地址(十六进制)

%x,%X    输出不带前缀的十六进制整数,小写x对应小写a、b、c……

%%         输出符号:%

输入输出单个字符

getchar();接收第一个字符,等待用户按下enter键后开始读取

getche();接收第一个字符,用户输入后马上读取,输入显示,头文件【#include<conio.h>】

getch();接收第一个字符,用户输入后马上读取,输入不显示,头文件【#include<conio.h>】

putchar();输出一个字符

#include<stdio.h>
void main() {
    char ch = getchar();//拿到输入的第一个字符
    printf("%c\n", ch);
    putchar(ch);//输出之前输入的字符
    putchar('\n');//输出换行符
 }

getc()和putc()

原型:

int putc(int char, FILE *stream)

int getc(FILE *stream)

省略步骤:FILE *pfin = stdin;

#include<stdio.h>
void main(){
  char str[100];
  fgets(str,100,stdin);//stdin标准输入,键盘
  fputs(str,stdout);//stdout标准输出,屏幕
}

输入输出字符串

Gets()与puts()是不安全的操作,取代方法为fgets()与fputs()

#include<stdio.h>
void main(){
char str[100];
   fgets(str,100,stdin);//stdin标准输入,键盘
   fputs(str,stdout);//stdout标准输出,屏幕
}

调用命令行

输出默认直接到屏幕,需要获取内容可以将其重定向到文件中,然后再取文件(> 、>>)

system("cp -rp dongdir dongdir111");

 

char类型的区分:

 

char 或者 signed char  取值范围为 :[-128,127]

 

unsigned char 取值范围为:[0,255]

‘1’、1、0x01的不同:

‘1’为字符,其对应的十进制为49,对应的十六进制为0x31

 1为整型,对应的十进制为1,对应的十六进制为0x01

十进制是逢十进一,十六进制是逢十六进一,如下表,可见0~9中,十进制和十六进制数是完全相同的,可直接用“==”。

int

0x

0

0(0x00)

1

1 (0x01)

2

2(0x02)

......

......

8

8(0x08)

9

9(0x09)

10

A(0x0A)

11

B(0x0B)

15

F(0x0F)

 

字符(ASCII)与进制之间的转换

字符到进制

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main() {

    char aa = (int)'b';//将ASCII转换为整数
    char bufx[120];
    itoa(aa, bufx, 16);//进制转换,2 8 10 16
    int lend = strlen(bufx);
    bufx[lend] = 0;//截断数组
    //输出:2----62
    printf("%d----%s\n", lend,bufx);//输出进制转换后的值
}

十六进制到字符串

#include<stdio.h>
#include<stdlib.h>
void main() {
    char chx[] = { 0x82,0x07,0x00,0x01,0x00,0x02,0x6e,0x62,0x00};
    char j = 0;
    const int lenx = sizeof(chx);
    char strxto[lenx];
    for (j = 0; j <lenx; j++)
    {
        printf("%c", chx[j]);
        strxto[j] = (char)chx[j];
    }
    printf("len:%d--data:%s--\r\n", lenx,strxto+6);
}

 

转载于:https://www.cnblogs.com/dongxiaodong/p/9883324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值