#include
函数原型:
char *strchr(const char*s , int c);
作用:
在字符指针s指向的字符串中,找ascii码为c的字符 只匹配第一个
找到返回字符的地址 找不到返回NULL
函数原型:
char *strrchr(const char *s,int c);
最后一次出现 返回 末次匹配地址
#include
函数原型:
char *strstr(const char *haystack,const char *needle);
作用:
haystack指向的字符串中查找到needle指向的字符串 首次匹配
找到返回地址,没有返回NULL
#include
函数原型:
int atoi(const char *nptr);
long atol(const char*nptr);
double atof(const char*nptr);
作用:
将nptr指向的字符串转换成整数 返回
#include
函数原型:
char *strtok(char *str,const char* delim);
作用:
按照delim指向的字符串中的字符,切割str指向的字符串
就是在star指向的字符串中发现delim字符串的字符 然后将其变成'\0'
调用strtok只切割一次,切割一次后,
再去切割的时候 strtok的第一个参数传NULL,意思是接着上次切割的位置继续切
注意 如果star字符串中出现了连续的几个delim中的字符,则只将第一个字符变成'\0'
#include
void test_strtok(){ char s[] = "asd:fwr:tgfas:rgrgert:ded"; char *ret; ret = strtok(s,":"); printf("%s\n",ret); while((ret = strtok(NULL,":"))!=NULL){ printf("%s\n",ret); } }
函数原型:
int sprintf(char *buf,const char *format,---);
作用:
输出到buf指定的内存区域
将按照格式保存的字符串复制给str 返回保存的字符串的字节数
int sscanf(const char*buf,const char *format,---) ;
作用:
从第一个参数中读取数据 返回成功的个数
#include
void test_springf_sscanf(){ char buf[20]; sprintf(buf,"%d:%d:%d",2023,10,1); printf("%s\n",buf); int a,b,c; sscanf("2023:10:1","%d:%d:%d",&a,&b,&c); printf("%d %d %d\n",a,b,c); } sscanf();函数的高级使用方式 (正则)
(1)跳过数据: %*s %*d
(2)读指定宽度的数据: %[width]s
(3)支持集合操作: 只支持获取字符串
%[a-z] 匹配a到z中任意字符(尽可能多的匹配)
%[aBc] 匹配 a B c中一员, 贪婪性
%[^aFc] 匹配 非 a F c的任意字符 贪婪性
%[^a-z] 表示读取除 a-z以外的所有字符
#include
void test_sscanf(){ char buf1[20]; sscanf("1234 5678","%*d %s",buf1); printf("%s\n",buf1); char buf2[20]; sscanf("123456789","%4s",buf2); printf("%s\n",buf2); char buf3[20]; sscanf("hfjadfhudfhiFGJHOS","%[a-z]",buf3); printf("%s\n",buf3); }
1.修饰普遍变量代表只读的意思
const int a = 100;
以后的程序中,不能再赋值给a,但是可以通过变量的地址修改
int *p = &a;
*p = 888;
2.修饰指针
如果const修饰指针变量的类型,无法通过指针变量修改地址里面的值
const int *p = &c;
如果const修饰指针变量,无法修改指针变量保存的地址
int * const p= &c;
如果const 既修饰指针变量的类型,又修饰指针变量,则只能通过原本的变量修改值
const int * const p= &c; 都不行哦
void test4(){ int c=100; //const int *p = &c; 可以修改这个验证 const的作用哦 int *p = &c; printf("*p = %d\n",*p); c=666; printf("*p = %d\n",*p); *p=777; printf("*p = %d\n",*p); int d = 888; printf("*p = %d\n",*p); p=&d; printf("*p = %d\n",*p); }
struct stu{
int id;
char name[20];
char sex;
int age;
};
void test5(){
struct stu chas;
chas.id = 121921;
chas.age=18;
strcpy(chas.name,"chas");
chas.sex='1';
struct stu jiji;
jiji = chas;
// 可以printf();看看结果哦
}
fread()
函数原型:
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
作用:
从 stream 所表示的文件中读取数据,一块是size字节 共 nmemb块 存放到ptr指向的内存里
返回 实际读到的块数
int num = fread (str,100,3,fp);
fwrite()
函数原型:
size_t fwrite(void *ptr, size_t size,size_t nmemb,FILE *stream);
作用:
将ptr指向的内存里的数据,向stream所表示的文件中写入数据,一块是size个字节,共nmemb块
返回 实际写入的块数