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不能轉換