C语言函数
2024-11-12 19:57:35 0 举报
AI智能生成
C语言的一些常见函数和关键字
作者其他创作
大纲/内容
printf(\"\\033c\");//清屏操作
%d用于输出十进制整数,%f用于输出浮点数,%c用于输出单个字符,%s用于输出字符串
printf 函数:格式化输出
scanf不会自动限制读取输入字符串的长度,如果要读取包含空格的字符串,可以使用fgets函数来代替scanf函数读取字符串,或者可以使用scanf(\"%[^\]\
%d用于读取十进制整数,%f用于读取浮点数,%c用于读取单个字符,%s用于读取字符串
scanf 函数:格式化输入
gets () 函数曾在 C 语言里广泛用于从标准输入(一般是键盘)读取一行文本(不包含换行符)并存入指定字符数组。但需注意,它已被视作不安全,在很多现代 C 语言环境及标准库中已废弃或移除,原因是其无法防止缓冲区溢出,易引发安全漏洞。
#include<stdio.h>int main(){char str[100];printf(\"Enter a string:\"); // 从键盘上获取字符串,直到\停止gets(str) ; printf(\"You entered:%s\\
外框
gets 函数:读取字符串(不推荐使用)
#include<stdio.h>int main(){char name[]=“张三”; printf(\"%s\\
puts 函数:输出字符串并换行
#include <stdio.h>int main() { int c; while ((c = getchar())!= '\') { putchar(c); } return 0;}//运用getcher函数可以输出一行字符串的方法
getchar 函数:读取单个字符
int i = 99; // 99是字符'c'的ASCII码putchar(i);由于 ASCII 码表中99对应的字符是c,所以这个putchar函数调用会输出字符c。
putchar 函数只能输出单个字符。不像 puts 函数能自动输出字符串并换行,也不如 printf 函数可通过格式控制输出多种类型数据。若要输出字符串或其他类型数据,得结合别的函数或者用循环来使用 putchar 函数。
putchar 函数:输出单个字符
标准输入输出函数
strcpy 函数:字符串拷贝
//如果比较的对象是字符串s1和s2,如果s1>s2,结果为1,如果s1==s2,结果为0,如果s1<s2,结果为-1//如果比较的对象是字符数组,结果就是差值
font color=\"#e74f4c\
strcmp 函数:字符串比较
strcat 函数:字符串拼接
该函数是C语言中用于字符串查找的一个标准库函数,它的作用是在一个字符串中查找另一个字符串的第一次出现,并返回指向该位置的指针。没找到返回NULL。
注意:1.寻找子字符串,必须要完全一致 2.寻找子字符串,区分大小写3.只会寻找第一个相同的子字符串,找到后立马结束
#include <stdio.h>#include <string.h>int main(){char s1[50]= \"This is a simple string\";char s2[10]=\"simpla\";// char *s2=\"simple\"; //如果是simple,那么s2在s1中出现了,返回值就是&s1[10]char *ptr; // 野指针ptr =strstr(s1,s2); // 这个函数的使用就是在s1中寻找是否有s2 // 由于s2在s1中都没有出现,所以返回值为NULLif(ptr == NULL) printf(\"NULL\\");else printf(\"%s\\
strstr 函数:查找子串
分割字符串,空格为分割点
#include <stdio.h>#include:<string.h>int main(){char str[]=\
strtok 函数:字符串分割
字符串处理函数
memset 函数:内存设置
是C中的一个操作符,用于获取一个对象或类型所占的内存字节数。 可以用的对象有类型、变量、数组、指针、结构体等。
sizeof函数
是C语言标准库中的一个函数,用于计算给定字符串(以'\\0'结尾的字符数组)的长度,但不包括终止的空字符'\\0'。 只能用于字符指针(char*)或字符数组,且该数组必须是以'\\0'结尾的字符串。
strlen函数
分配大小
内存对齐
malloc 函数:分配内存
int*str = (int *)malloc(32); free(str); str =NULL;//释放后要让他变为空指针,不然会变成野指针。
只需要释放一次,避免重复释放
free 函数:释放内存
calloc函数:申请内存
realloc函数:内存扩展
动态内存分配
内存管理函数
功能:goto 语句用于实现同一函数内无条件跳转至某个标签处执行。适用情况:在多层嵌套循环中跳出到特定位置可能有用。标签定义:是标识符后加冒号,要在函数内部且作用域内唯一。跳转范围:只能在同一函数内部跳转,不能跨函数。避免滥用:尽量少用,循环结构和条件语句可提供更清晰、结构化代码。行为特点:无 “短路” 行为,会无条件跳转,不考虑之前代码是否执行完。影响:使用 goto 语句可能降低代码的可读性与可维护性,应优先考虑更结构化的控制流语句。
int main() { int i = 0; start: // 标签定义 if (i < 5) { printf(\"%d\\
goto函数
/*江意事项:内存分配:在使用bzero函数之前,确保已经为要清零的内存区域分配了font color=\"#ec7270\
bzero函数;数组清空
const修饰数组和变量时必须初始化,且后面不可再修改
const int* ptr; // ptr 指向的内容(即 a 的值)不能被修改 int* const ptr ; // ptr 本身不能被修改,但 ptr 指向的内容(即 a 的值)可以 const int* const ptr = &a; // 既不能修改 ptr 本身,也不能修改 ptr 指向的内容
const关键字:只读
静态局部变量由 static 修饰局部变量而成,具有以下特点:生命周期延长:从程序开始执行直至结束,不像普通局部变量在函数调用结束就销毁。初始化特性:仅在首次进入其定义函数时初始化一次,后续函数多次调用也不再初始化。作用域情况:作用域依旧限定在定义它的函数内部,外部无法对其进行访问。
static关键字:修改可见性和生命周期
rand只是一个伪随机; 需要在前面加srand(time(NULL))或者 srand((ubsigbedint)time(NULL))设置随机因子; rand()%100; //使随机数在0~99之间,//在n-m之间就写%(m-n+1)+n;
rand生成随机数
volatile 关键字的作用特点:可见性:被声明为 volatile 的变量每次读取从主内存而非 CPU 缓存进行,保证不同线程对其操作的修改能被其他线程立即看到最新值。有序性:确保不同线程对 volatile 变量读写操作的顺序不被编译器重排序,避免由此导致的问题。禁止编译器优化:告诉编译器不对相关代码做优化,特别是不缓存 volatile 变量读写操作到寄存器,防止不正确优化。volatile 关键字的使用场景:多线程编程:多线程同时访问修改同一变量时,用 volatile 可避免因未修饰导致的线程间数据不一致问题。中断服务函数:在嵌入式系统中,中断服务函数修改共享变量时,volatile 能确保修改对其他函数可见,避免因编译器缓存值到寄存器造成的数据不一致。硬件寄存器访问:在嵌入式系统编程访问硬件寄存器时,用 volatile 修饰可确保每次读取到最新的硬件状态,因为硬件寄存器值可能随时被硬件改变。
volatile关键字
// 在这个例子中,x和 y 都是自动变量,因为它们在函数main的局部作用域内被声明。即使为x显式地使用了auto关键字,它也不会改变x的存储类别或生命周期。// 总结来说,auto关键字在c语言中主要用于声明自动变量,但由于所有局部变量默认都是自动的,因此它在实际编程中很少被显式使用。
#include <stdio.h>int main()auto int x= 10;// 显式地使用auto关键字,但实际上是多余的等价: int x=10;printf(\"x=%d\\
auto自动化变量
子主题
register寄存器变量
其他函数
C语言常见函数
0 条评论
回复 删除
下一页