<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # gets ~~~ 參數是個字符數組 char * gets(char *s); ~~~ 使用gets和scanf都要注意緩沖區溢出問題 返回值 * 成功: 讀取的字符串 * 失敗: NULL ~~~ int main(int argc, char const *argv[]) { char a[100]={ 0 }; gets(a); printf("%s\n", a); return 0; } ~~~ 運行會有個警告,先不用管 * scanf認為回車和空格都代表輸入完成,不允許含有空格 * gets認為回車代表輸入完成,空格只是字符串一部分 # fgets ~~~ char *fgets(char *s, int size, FILE *stream); ~~~ * 從stream指定的文件內讀入字符,保存到指定的內存空間,直到出現換行字符,讀到文件結尾或是已經讀了size-1個字符為止,最后自動加上字符`'\0'`作為字符串結束 * fgets有三個參數,第一個參數是char的數組,第二個參數是標明這個數組的大小,第三個參數如果是通過鍵盤輸入可以固定寫為stdin * 結果: 如果輸入的大小小于原始指針對應區域的大小,會在字符串輸入完成時自動加上`\n\0`.如果輸入的大小小于等于原始指針對應的區域大小,會自動加上`\0`,而不會在加上`\n` gets函數不檢查預留緩沖區是否能夠容納用戶實際輸入的數據.多出來的字符會導致內存溢出,fgets解決了這個問題 由于fgets函數是為讀取文件設計的,所以讀取鍵盤輸入的時候沒有gets方便 ~~~ int main(int argc, char const *argv[]) { char a[10]={ 0 }; fgets(a,sizeof(a),stdin); printf("%s", a); return 0; } ~~~ fgets會認為用戶輸入的回車也是字符串的一部分 # puts ~~~ #include <stdio.h> int puts(const char *s); ~~~ 返回值 * 成功: 非負數 * 失敗: -1 puts函數打印字符串,與printf不同,puts會在最后自動添加一個'\n',puts不支持各種轉義字符,比如%d,%s都不支持,puts只能簡單的直接輸出一個字符串,而不能輸出char,int,double等其他類型 ~~~ char s[]="hello world"; puts(s); ~~~ # fputs ~~~ int fputs(const char * str, FILE * stream); ~~~ fputs是puts的文件操作版本 第一個參數是一個char的數組,第二個參數如果只是用puts在屏幕輸出的話可以固定寫為stdout 返回值 * 成功: 0 * 失敗: -1 ~~~ char s[]="hello world"; fputs(s,stdout); ~~~ # strlen 字符串長度 這個庫函數需要包含頭文件<string.h> ~~~ size_t strlen(const char * _Str); ~~~ **返回不包含字符串結尾'\0'的字符串長度** **建議不要處理字符數組,除非含有'\0'** 我們自己算長度 ~~~ char a[100]="hello"; unsigned int len=0; while(a[len]) { len++; } printf("%u\n", len); ~~~ ~~~ #include <stdio.h> #include <string.h> int main(int argc, char const *argv[]) { char a[100]="hello world"; unsigned int len=0; len=strlen(a); printf("%u\n", len); return 0; } ~~~ # strcat 字符串追加 ~~~ size_t strcat(char * _Str1, const char * _Str2); ~~~ 將參數_Str2追加到_Str1后尾,'\0'也會追加過去 返回 * 成功: 返回dest字符串的首地址 * 失敗: NULL ~~~ char a[100]="abc"; char b[100]="123"; //把a和b合并為一個字符串,結果放入a strcat(a,b); printf("%s\n", a); ~~~ 要小寫,a的長度和b的長度,不然會內存溢出 # stncat,字符串有限追加 ~~~ size_t strncat(char * _Str1,const char * _Str2,size_t len); ~~~ 在strcat基礎上增加了一個參數,這個參數來標明最多可以追加幾個char # strcmp 字符串比較 ~~~ int strcmp(const char * _Str1, const char * _Str2); ~~~ 比較的是字符ASCII碼大小 返回 相等返回0, 大于:>0, 小于:<0 # strncmp 字符串有限比較 指定比較2個字符串的前幾個字符 ~~~ int strncmp(const char * _Str1, const char * _Str2,size_t n); ~~~ n代表指定比較字符串的數量 # strcpy 字符串拷貝 ~~~ char *strcpy(char *_Str1, comst char *_Str2); ~~~ 將參數_Str2拷貝到參數_Str1中,'\0'也會拷貝過去 Strcpy也存在內存溢出的問題 返回 * 成功: 返回dest字符串的首地址 * 失敗: NULL # strncpy 字符串有限拷貝 ~~~ char *strncpy(char *_Str1, comst char *_Str2,size n); ~~~ n代表有限拷貝,一般n為`size(char *_Str1)-1` # sprintf 格式化字符串 和printf函數功能類似,printf函數將格式化結果輸出到屏幕,**sprintf將格式化結果輸出到字符串** ~~~ #include <stdio.h> int sprintf(char *str, const char *format, ...); 功能: 根據參數format字符串來轉換并格式化數據,然后將結果輸出到str指定的空間中,直到出現字符串結束符'\0'為止 參數: str:字符串首地址 format:字符串格式,用法和printf()一樣 返回值: 成功: 實際格式化的字符個數 失敗: -1 ~~~ sprint使用方法和printf類似,唯一區別是增加了第一個參數,第一個參數是一個char數組 ~~~ char a[100]; sprintf(a,"%s","hello world"); printf("%s\n", a); ~~~ # sscanf函數 sscanf類似scanf函數,scanf從鍵盤讀取用戶輸入,scanf從指定格式化字符串讀取輸入 sscanf多了第一個參數,char數組,sscanf會從這個char數組中讀取相關內容 ~~~ #include <stdio.h> int sscanf(const char *str, const char *format, ...); 功能: 從str指定的字符串讀取數據,并根據參數format字符串來轉換并格式化數據 參數: str: 指定的字符串首地址 format: 字符串格式,用法和scanf()一樣 返回值: 成功: 實際讀取的字符個數 失敗: -1 ~~~ ![](https://box.kancloud.cn/50791830f85e99e2c0de30e47822ca6f_528x255.png) # strchr 查找字符 ~~~ char * strchr(char * _Str,int _Ch); ~~~ 在參數_str中查找_Ch指定字符,找到返回字符_Ch在_Str中所在位置,沒有找到返回NULL; ~~~ int main() { char src[] = "dda123sdf"; char *p = strchr(src, 'a'); //如果是漢子用"" printf("p=%s\n", p); //a123sdf if (p != NULL) { printf("找到了\n"); } system("pause"); return EXIT_SUCCESS; } ~~~ # strstr查找字符串 ~~~ int main() { char src[] = "dda123sdf"; char *p = strstr(src, "a123"); printf("p=%s\n", p); //a123sdf system("pause"); return EXIT_SUCCESS; } ~~~ 失敗返回NULL # strtok 字符串分割 ~~~ #include<string.h> char *strtok(char *str, const char *delim); ~~~ 功能: 將字符串分割成一個個片段,當strtok()在參數s的字符串中發現參數delim中包含的分割字符時,則會將該字符改為'\0'字符,當連續出現多個時只替換第一個為'\0' ~~~ int main() { char src[] = "dda123sdf"; char *p = strtok(src, "a123"); printf("p=%s\n", p); //dd system("pause"); return EXIT_SUCCESS; } ~~~ # scanf ~~~ int main() { char arr[100]; int a, b, c; //1. 接收換行結束,可以接收空格 //scanf("%[^\n]", &arr); //printf("%s\n", arr); //2. 在scanf獲取數據時,建議不要添加任何字符,空格除外 //scanf("a=%db=%dc=%d", &a, &b, &c); //輸入a=1b=2c=3 //printf("%d %d %d\n", a, b, c); //3. 有限定字符寬度的格式化 //scanf("%1d%2d%3d", &a, &b, &c); //printf("%.2f\n", 3.1415); //printf("%d %d %d\n", a, b, c); //補空格 //printf("%4s\n", "ab"); //截取 //printf("%.4s\n", "ab"); //4. 屏蔽數據類型, %d屏蔽數字, %c屏蔽字符 //scanf("%*d%s", arr); //printf("%s\n", arr); //5. 屏蔽一個區間之內的 //scanf("%*[a-z]%c", arr); //printf("%s\n", arr); system("pause"); return EXIT_SUCCESS; } ~~~ # aoti
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看