1.取随机数 2.scanf与printf 二.printf格式化输出
3. gets puts 标准读写 4.fgets fputs 文件读取写入
5.strlen 字符串长度 6.strcpy, strncpy 字符串拷贝 7.strcat ,strncat 字符串拼接
8.strcmp, strncmp字符串比较 (Ascll大小) 9.sprint sscanf 10.strchr strstr
11.strtok 12.atoi ,atol , atof
1.取随机数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
int main(void) {
srand((unsigned int)time(NULL)); //设置随机数种子为时间,
for (int i = 0; i <10; i++)
{
printf("%d\n", rand() % 11 + 90); //取90-100得随机数
}
return 0;
}
取模 10 表示 0-9之间的数 , 取模100表示0-90之间的数 取模11表示0-10之间的数 rand() % 11 + 90); 表示 90-100
2.scanf与printf
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main(void) {
printf("请输入:_________");
char str[100];
scanf("%[^\t]",str); // 正则表达式通配符,只有接受到换行才作为结束符
printf("%s", str);
int a=0;
scanf("%d", &a); //输入是一个数必须加上&取地址
printf("%d\n", a);
return 0;
}
1. scanf("%[^\t]",str); 表示输入以 制表符结束, 将接受到的字符存入 字符数组str
2. scanf("%d", &a); 默认以空格结束符, 输入数字时 必须加上&取地址,否则报错
2.scanf 接受时,必须按照格式接受, 如果没有格式空格和回车可作为默认分隔符
3. %1d %2s 接受一位数 与两位字符串
4.%*d%s 表示只接受字符串而忽律数字 %*[1-9]%s 表示屏蔽数字1-9
字符串默认 是以 '\0' 结尾 如下长度为4
二.printf格式化输出
1. printf("%.2f", 3.1425); 保留两位小数 2.printf("%3d",12 ); 右对齐输出 不够左边空格补齐 超出正常输出
3. printf("%05d \n",123 ); 右对齐输出 不够左边用0补齐 超出正常输出 4. printf("%5s \n", "abc"); 与%d用法一致
5.printf(" %.2s \n", "abc"); 截取2位字符串 6.printf("%-5d ", 123); 左对齐
3. gets puts 标准读写
1.接受一个字符串 :gets(str) 允许输入的字符串可以有空格 ,直到接受到回车或者字符串结束标志才结束(不安全)
2. 输出一个字符串 :puts 默认输出结束时自带输出一个换行 返回值 0成功 -1失败
4.fgets fputs 文件读取写入
1. fgets( char* _Buffer, int _MaxCount, FILE* _Stream);
如果输入的大小 小于原始指针对应区域大小,会在字符串输入完成时自动加上 \n\0 ,相当于输入完成时按下的回车
如果输入的大小 小于等于原始指针对应的区域大小会自动加上 \0 ,而不会再加上\n,因为已经满了
2. fputs ( char const* _Buffer, _Inout_ FILE* _Stream); fputs是puts的文件操作版,但fputs不会自动输出一个 '\n'
输出以 '\0'为结尾
5.strlen 字符串长度
1.strlen 得出有效字符串的个数,标志是以 '\n' 为结尾 只能处理字符串,不能处理字符数组
6.strcpy, strncpy 字符串拷贝
1.strcpy 拷贝字符串 参数 : 目标字符串, 源字符串 拷贝源的 \0 与 空格 成功返回地址,失败返回NULL
int main(void) {
char arr1[] = "123";
char arr2[4];
strcpy(arr1, arr1);
puts(arr1); 123 }
2. strncpy 拷贝指定字符串个数 参数 : 目标字符串, 源字符串 , 拷贝个数 strncpy 不拷贝源数据的 \0 所以拷贝出现乱码
7.strcat ,strncat 字符串拼接
char arr1[8] = "123";
char arr2[] = "456";
strcat(arr1, arr2);
1. strcat(arr1, arr2); 把arr2追加到 arr1 所有注意arra1的数组越界异常 2. strncat 指定追加个数 3.strcat(arr1,"随意加");
追加自动拷贝 '\0'
8.strcmp, strncmp字符串比较 (Ascll大小)
char arr1[8] = "hello\0dad";
char arr2[] = "hello\0sdhdgfh";
int rest = strcmp(arr1, arr2);
printf("%d\n", rest); 0
比较的是 \0 以前的有效 字符 strncmp比较指定位数的字符串 Ascll码值 (有效字符串)
9.sprint sscanf
int main(void) {
int a = 123;
char arr[] = "abc";
char dest[100];
sprintf(dest, "%s %d", arr, a);
printf("%s \n", dest); abc 123
int b;
char arr2[10];
sscanf(dest, "%s %d", arr2, &b);
printf("%s", arr2);
printf("%d", b); abc123
return 0;
}
1. sprint 将多个字符串按照自定义格式 放入另一个新的字符串中
2.sscanf 按照自定义格式将一个字符串拆分为多个整数或字符串
10.strchr strstr
int main(void) {
char arr[] = "eeeall哈o";
char arr2 = 'l';
char arr3[] = "ee";
printf("%s \n", strchr(arr, arr2)); //ll哈o
printf("%s \n", strchr(arr, 97)); //all哈o
printf("%s \n", strstr(arr, arr3)); //eeeall哈o
printf("%s", strstr(arr, "哈")); //哈o
return 0;
}
1. strchr 寻找与一个字符 相同的开头的字符串(原理 比较Ascll相同)
2. strstr 寻找与字符串 相同的开头的字符串(原理 比较Ascll相同) strstr可以寻找汉字 而strchr不行 一个汉字两个字节
11.strtok
int main(void) {
char arr[] = "www.csdn.com";
char* p = strtok(arr, ".");
while (p != NULL) {
printf("%s \n", p); www csdn com
p = strtok(NULL, ".");
}
return 0;
}
1.第二次切割写NULL 原理是将切割点换成 '\0' 列如. 会破坏原始字符串
12.atoi ,atol , atof
int main(void) {
char arr[] = " 100";
int a= atoi(arr);
printf("%d \n", a);
char arr2[] = " 1005";
int b = atol(arr2);
printf("%d \n", b);
char arr3[] = "3.142665";
float c = atof(arr3);
printf("%f \n", c);
return 0;
}
1.atoi 跳过前面空格 将字符串转换为整形 2.atol 将字符串转换为长整形 3.atof 将字符串转换为浮点型double也可以
4.1000dasdasda 可以转换 dada100不能转换