0
点赞
收藏
分享

微信扫一扫

C语言初级概念区分

早安地球 2022-02-28 阅读 47
c语言c++

一、C输入输出函数

1.1 sprintf()     stdio.h

        sprintf()函数的功能非常强大:效率比一些字符串操作函数要高;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上。

函数功能:格式化字符串,将格式化的数据写入字符串中。

函数原型:int sprintf(char *buffer, const char *format, [argument]...)

参数:

(1)buffer:是char类型的指针,指向写入的字符串指针;

(2)format:格式化字符串,即在程序中想要的格式;

(3)argument:可选参数,可以为任意类型的数据;

        函数返回值:buffer指向的字符串的长度;

用处:

(1)格式化数字字符串:在这点上sprintf和printf的用法一样,只是打印到的位置不同而已,前者打印给buffer字符串,后者打印给标准输出,所以sprintf也可以用来将整型转化为字符串,比itoa效率高且如此地简便~比如:sprintf(buffer, "%d", 123456);执行后buffer即指向字符串“123456”

sprintf(sendline, "$%2.2f %c %2.2f %c %2.2f!", gnrmc.Latitude, gnrmc.Latitude_, gnrmc.Longitude, gnrmc.Longitude_, gnrmc.Height);

输出sendline时候,$22.00空格E22.00空格E0.00!

(2)连接字符:

(a)连接以'\0'结束的字符串:

#include<stdio.h>  
int main()  
{  
    char buffer[10];  
    char *a = "1234";  
    char *b = "5678";  
    sprintf(buffer, "%s%s", a, b);  
    printf("%s\n", buffer);  
    return 0;  
}  

(b)连接结尾没有'\0'的字符数组或字符串缓冲区:  注意这里加了格式控制符

#include<stdio.h>
int main()
{
	char a[] = {'1', '2', '3', '4'};
	char b[] = {'5', '6', '7', '8'};
	char buffer[10];
	sprintf(buffer, "%.4s%.4s", a, b);
	printf("%s\n", buffer);
	return 0;
}

 

 (c)如果我们想动态获取要处理的字符缓冲区长度,则将上面sprintf改为:sprintf(buffer, "%.*s%.*s", sizeof(a), a, sizeof(b), b);即可

1.2 sscanf()

sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。

sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。

int sscanf(const char *str, const char *format,......);

sscanf()会将参数str的字符串根据参数format字符串来转换格式并格式化数据。转换后的结果存于对应的参数内。                成功则返回参数数目,失败则返回0

作用:

1. 取指定长度的字符串

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("12345","%4s",str);
	printf("%s\n",str);
	return 0;
}

2. 格式化时间

#include<stdio.h>
#include<string.h>
int main()
{
	int year, month, day, hour, minute, second;
	sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year, &month, &day, &hour, &minute, &second);
	printf("time=%d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second);
	return 0;
}

 3. 读入字符串

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("12345","%s",str);
	printf("%s\n",str);
	return 0;
}

4. %*d和%*s加了(*)表示跳过此数据不读入(也就是不把此数据读入参数中)

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("1234abcd","%*d%s",str);
	printf("%s\n",str);
	return 0;
}

5.  取到指定字符为止的字符串。如例子所示,遇到‘+’为止的字符串。

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("1234+abc","%[^+]",str);
	printf("%s\n",str);
	return 0;
}

6. 取到指定字符集为止的字符串。如遇到小写字母为止的字符串。

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("1234+abc1234","%[^a-z]",str);
	printf("%s\n",str);
	return 0;
}

7. 取仅包含指定字符集的字符串。(取仅包含数字和小写字母的字符串,是取得连续的字符串)。

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	sscanf("123456abcdefBFRGTY7890","%[1-9a-z]",str);
	printf("%s\n",str);
	return 0;
}

1.3 printf输入输出格式及格式控制字符

二、U32、U16、U8等

typedef unsigned int u32;//无符号整型
typedef unsigned short u16;
typedef unsigned char u8;

三、extern等关键字

四、头文件、.C的写法

4.1 头文件    要注意的时当你在调用时头文件要这样写:#include"hacker.h"

//#ifendif防止多次包含一个文件
#ifndef HACKER_H_
#define HACKER_H_ 





#endif     //防止文件被重复包含 

五、指针、函数、常量、数组的关系

六、sizeof测指针字符串、strlen、\0、结构体大小、字节对齐等关系

七、端口、IP、DNS、域名、防火墙、固定IP、默认网关等等

八、字符串处理

九、Http、TCP、UDP区别

十、注释、函数名、变量名规则

举报

相关推荐

0 条评论