字元串處理總結

来源:https://www.cnblogs.com/coderJiebao/archive/2018/02/09/Csummary01.html
-Advertisement-
Play Games

一、字元串輸入 1. 輸入單個字元串 可以使用 scanf 函數,以空格為分割輸入字元串,代碼如下: 2. 輸入整行字元串 可以使用 gets 函數,以 '\n' 為分割輸入整行字元串,代碼如下: 二、字元串處理 1. 字元串拷貝 可以使用 strcpy 函數,代碼如下: 註意:1. str1 會覆 ...


一、字元串輸入

1. 輸入單個字元串  

  可以使用 scanf 函數,以空格為分割輸入字元串,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s", str) != EOF) {
 8         printf("%s\n", str);
 9     } 
10 
11     return 0;
12 }

 

 

 

 

 

2. 輸入整行字元串

  可以使用 gets 函數,以 '\n' 為分割輸入整行字元串,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str[100];
 6     // 以 '\n' 為分割輸入整行字元串 
 7     while(gets(str) != NULL) {
 8         printf("%s\n", str);
 9     } 
10 
11     return 0;
12 }

 

 

 

二、字元串處理

1. 字元串拷貝

  可以使用 strcpy 函數,代碼如下:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    // 一個一個輸入字元串,以空格為結尾 
    while(scanf("%s", str1) != EOF) {
        strcpy(str2, str1);            // 將 str1 拷貝到 str2 
        printf("%s %s\n", str1, str2);
    }

    return 0;
}

 

 

 

 

  註意:1. str1 會覆蓋 str2 內容;2. 定義數組是,str2 長度要大於或等於 str1。

 

  也可以使用 strncpy 函數,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str1[100], str2[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s %s", str1, str2) != EOF) {
 8         strncpy(str2, str1, 3);            // 將 str1的前3個字元 拷貝到 str1 
 9         printf("%s\n", str2);
10     }
11 
12     return 0;
13 }

  註意:str2 的前 n 個字元會被 str1 的前 n 個字元覆蓋。

 

2. 字元串連接

  可以使用 strcat 函數,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str1[100], str2[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s %s", str1, str2) != EOF) {
 8         strcat(str2, str1);            // 將 str1 接到 str2 後面 
 9         printf("%s\n", str2);
10     }
11 
12     return 0;
13 }

 

  註意:要註意 str2 的長度為 str1 與原 str2 長度之和,str2 最後的 '\0' 字元會自動消失。

 

  也可以使用 strncat 函數,將字元串的前 n 個字元連接到另一個字元後面,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str1[100], str2[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s %s", str1, str2) != EOF) {
 8         strncat(str2, str1, 3);            // 將 str1 的前3個字元接到 str2 後面 
 9         printf("%s\n", str2);
10     }
11 
12     return 0;
13 }

 

 

3.  字元串比較

  可以使用 strcmp 函數,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str1[100], str2[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s %s", str1, str2) != EOF) {
 8         int ptr = strcmp(str1, str2);            // 比較 str1,str2 
 9         if(ptr < 0) {                            // 返回值小於0 
10             printf("%s < %s\n", str1, str2);    // str1<str2 
11         } else if(ptr == 0) {                    // 返回值等於0
12             printf("%s == %s\n", str1, str2);    // str1=str2 
13         } else {                                // 返回值大於0
14             printf("%s > %s\n", str1, str2);    // str1>str2
15         }
16     }
17 
18     return 0;
19 }

 

 

4. 字元串長度

  可以使用 strlen 函數,代碼如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main() {
 5     char str1[100];
 6     // 一個一個輸入字元串,以空格為結尾 
 7     while(scanf("%s", str1) != EOF) {
 8         // 輸出字元串長度 
 9         printf("strlen = %d\n", strlen(str1));
10     }
11 
12     return 0;
13 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 假設我們有類 A 、類 B 和類 Test ,類 Test 具有類 A 和類 B 的全部屬性,並且它們都具有 temp 屬性,現在我們需要在類 Test 中實現對 temp 屬性的設定與讀取,故寫出以下程式: ~~~~ include class Base{ public: int temp; }; ...
  • 經典問題用高斯約當演算法求解線性方程組。這裡要求對任意形式的線性方程組都能夠妥善處理,不能只適用於方程個數和未知量數目相等的特殊情形。 先用迴圈結構將增廣矩陣轉換為階梯形矩陣,迴圈結束時得到階梯型矩陣非零行行數,同時得到一個鏈表其中存放有各非零行主元的列標,列標在鏈表中按從左到右的順序依次遞減。然後根 ...
  • 將阿拉伯數字轉化為中文大寫是很簡單很實用的功能,但由於0這個特殊數字的存在使得實現起來並非那麼容易,實現這一功能的關鍵就是對0的正確處理。該程式是我幾個月之前寫成的,當時沒有加註釋,現在程式的實現細節基本忘光了,難以寫出註釋。只能憑自己模糊的印象大致部分地介紹一下思路和方法,當初思路中的細節已經無法 ...
  • ...
  • 最近快過年了,學習的勁頭也小了。今天聽老師講的也挺簡單,就直接把代碼copy過來了,另外祝各位 春節快樂 ...
  • 本章主要內容: 1)bool類型 2)三目運算符 3)引用 1.布爾型bool 在C++中,bool類型只有true(非0)和flase(0)兩個值,且bool類型只占用了一個位元組. 例如: 輸出結果: 2.C++三目運算符 C++對三目運算符進行了升級,升級後的三目運算符可以放在左值使用,例如: ...
  • $menu = array( 'button' => array( array( 'type'=>'view', 'name'=>'百度', 'url'=>'https://www.baidu.com', ), ), ); $menu = json_encod... ...
  • 從本章起開始從0學習C++,本章主要內容: 1)C和C++的基本區別 2)C和C++的const區別 1.C++和C區別 1.1 C++更強調語言的實用性,所有變數都可以在需要時再定義 比如: 1.2 C++不允許定義多個同名全局變數,而C卻可以重覆定義 1.3 C++的register只是個相容作 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...