【C语言笔记1】数据与输入

数据与输入

数据

ISO C规定int取值上限为32767.

声明:int a,b,c; int a=12,b=4;

糟糕的格式:int dogs,cats=12;只初始化了cats,但容易带来误解

整数是指不含小数点和指数的整数. 22.01, 2.2E3都不是整数,前缀0表示八进制,前缀0x表示十六进制,一般一个int占用一个字长.%#o带0表示符号的八进制

long long占用64位,long占32位,short占用16位,int一般和long相同. 一般来说我们首先考虑unsigned int
在C99 和 C11 提供 %zd 转换说明匹配sizeof 的返回类型。

float ----> 单精度浮点型,系统的基本浮点类型,可精确到至少6位有效数字

double ----> 双精度浮点型,存储范围更大,能表示至少10位有效数字和更大的指数。

字符串和格式化输入/输出

string.h

库变量:size_t新标准使用%zd返回sizeof()和strlen()的类型
库宏: NULL
库函数:void *memchr(const void *str, int c, size_t n)在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。

strstr(a,b)查找字符串a中的b首次出现的位置
strlen()

strcmp()strncmp()

memcmp(const void *str,const void *str2,size_t n)

strcpy()strncpy()

strcat() strncat()将b(前n个字符)连接到n尾部

int sprintf(char *str,const char *format,..)根据format字符串来转化格式化数据,返回实际格式化的字符个数

#include <stdio.h>
int main(){
   char dst[100] = { 0 };
int a = 10;
char src[] = "hello world";
sprintf(dst, "a = %d, src = %s", a, src);
printf("dst = \" %s\"\n", dst);
    return 0;
}
输出dst = " a = 10, src = hello world"

sscanf()

char src[] = "a=10, b=20";
int a;
int b;
sscanf(src, "a=%d, b=%d", &a, &b);
printf("a:%d, b:%d\n", a, b);

strchr(str,X) 在str中查找字母字符的位置(弱化版strstr)

char *strtok(char *str, const char *delim)

将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。

在第一次调用时:strtok()必需给予参数 s 字符串,往后的调用则将参数 s 设置成 NULL,每次调用成功则返回指向被分割出片段的指针

char a[100] = "adc*fvcv*ebcy*hghbdfg*casdert";
    char *s = strtok(a, "*"); //将"*"分割的子串取出
    while (s != NULL)
    {
        printf("%s\n", s);
        s = strtok(**NULL**, "*");
    }

atoi() atof() atol().....

const

C90标准增加const关键字。用于限定一个变量只读

把const数据或非const 数据的地址初始化为指向 const的指针或为其赋值是合法的∶

const指针可以指向普通变量和const变量,而普通指针只能指向普通变量。如此看来,函数中的const指针标识既可以给一个const也可以给一个非const,非const备份副本后会将其初始化为一个const.

    double rates[5] = {88.99, 100.12, 59.45, 183.1, 340.5};
    const double locked[4] = {0.08, 0.075, 0.0725, 0.07};
    const double *pc = rates; //有效
    pc = locked;
    pc = &rates[3];
const double PI 3.1415926
#define PI 3.1415926 宏定义是把代码中的PI换成3.1415926,而const是创建一个不可修改
的变量

C预处理器是非常有用的工具

const的用法可以更灵活

double * const p表示指针不可指向别处(const在后面,也即(const p)) 可做*p=26

double const *pconst double *p表示指针所指不能被修改(const(*p)) 可做p=&b

double const * const pconst double * const p表示都不能被修改
p计数法即十六进制浮点计数法

C99规定,可以初始化列表中使用带方括号的下标指明待初始化的元素。

对于一般的初始化,在初始化一个元素后,末初始化的元素的都会被设置为 0 。

⚠️注意:在使用数组时,要防止数组下标超出边界。必须确保下标是有效的值

int arr[6] = {[5] = 2}; // 把arr[5] 初始化为2

字符输入输出

C程序处理的是流而不是直接处理文件。**流(stream)**是一个实际输入或输出映射的理想化数据流。这意味着不同属性和不同种类的输入,由属性更统一的流来表示。于是,打开文件的过程就是把流与文件相关联,而且读写都通过流来完成。

strlen()函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值