C語言-10.字符串

10.1字符串

10.1-1字符串

字符數組
char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’};

word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!

這不是C語言的字符串,因為不能用字符串的方式做計算
字符串
char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’};

word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!
word[6]\0

字符串

  • 以0(整數0)結尾的一串字符
  • 0或‘\0’是一樣的,但是和‘0’不同
  • 0標志字符串的結束,但它不是字符串的一部分
  • 計算字符串長度的時候不包含這個0
  • 字符串以數組的形式存在,以數組或指針的形式訪問
  • 更多的是以指針的形式
  • sring.h里有很多處理字符串的函數
    字符串變量
    以下是存儲字符串的方式
  • char *str = “Hello”;
  • char word[] = “Hello”;
  • char line[10] = “Hello”;
    字符串常量
  • “Hello”
  • “Hello”會被編譯器變成一個字符數組放在某處,這個數組的長度是6,結尾還有表示結束的0
  • 兩個相鄰的字符串常量會被自動連接起來
  • 行末的\表示下一行還是這個字符串常量
    字符串
  • C語言的字符串是以字符數組的形態存在的
  • 不能用運算符對字符串做運算
  • 通過數組的方式可以遍歷字符串
  • 唯一特殊的地方是字符串字面量可以用來初始化字符數組
  • 以及標準庫提供了一系列字符串函數
# include <stdio.h>int main()
{char a[]="Hello";printf("%s",a);
}

10.1-2字符串常量

字符串常量
char* s = “Hello,world”;

  • s 是一個指針,初始化為指向一個字符串常量
  • 由于這個常量所在的地方,所以實際上s是const char* s,但是由于歷史的原因,編譯器接受不帶const的寫法
  • 但是試圖對s所指的字符串做寫入會導致嚴重的后果
  • 如果需要修改字符串,應該用數組:
  • char s[] = “Hello,world!”;
    指針還是數組?
  • char *str = “Hello”;
  • cahr world[] = “Hello”;
  • 數組:表示這個字符串在這里
  • 作為本地變量空間自動被回收
  • 指針:這個字符串不知道在哪里
  • 處理參數
  • 動態內存分配
    注意:如果要構造一個字符串–>數組
    如果要處理一個字符串–>指針
    char*是字符串?
  • 字符串可以表達為char*的形式
  • char*不一定是字符串
  • 本意是指向字符的指針,可能指向的是字符數組(就像int*一樣)
  • 只有它所指的字符數組有結尾的0,才能說它所指的是字符串

10.1-3字符串輸入輸出

字符串賦值?

  • char *t = “title”;
  • char *s;
  • s=t;
  • 并沒有產生新的字符串,只是讓指針s指向了t所指的字符串,對s的任何操作就是對t做的
    字符串輸入輸出
  • char string[8];
  • scanf(“%s”,string);
  • printf(“%s”,string);
  • scanf讀入一個單詞(到空格,tab或回車為止)
  • scanf是不安全的,因為不知道要讀入的內容的長度
    安全的輸入
    char string[8];
    scanf(“%7s”,string);
    在%和s之間的數字表示最多允許讀入的字符串的數量,這個數字應該比數組的大小小一
    常見錯誤
  • cahr *string;
  • scanf(“%s”,string);
  • 以為char*是字符串類型,定義了一個字符串類型的變量string就可以直接使用了
  • 由于沒有對string初始化為0,所以不一定每次運行都沒錯
    空字符串
  • char buffer[100]=“”;
  • 這是一個空的字符串,buffer[0] == ‘\0’
  • char buffer = “”;
  • 這個數組的長度只有1!

10.2字符串函數

10.2-1單字符輸入輸出,用putcher和getcher

putcahr

  • int putchar(int c);
  • 向標準輸出寫一個字符
  • 返回寫了幾個字符,EOF(-1)表示寫失敗
    getchar
  • int getchar(viod);
  • 從標準輸入讀取一個字符
  • 返回類型是int是為了返回EOF(-1)
  • Windows–>Ctrl-Z
  • Unis–>Ctrl-D

10.2-2字符串函數strlen

標準庫中的字符串函數
string.h

  • strlen
  • strcmp
  • strcpy
  • strcat
  • strchr
  • strstr
    strlen
  • size_t strlen(const cahr *s)
  • 返回s的字符串長度(不包括結尾的0)
#include <stdio.h>
#include <string.h>int main()
{char a[]="Hello";printf("%s\n",a);printf("%lu",strlen(a));
}

以下是是通過自己寫的函數邏輯實現strlen的功能

#include <stdio.h>
#include <string.h>int strlen1(

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82100.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python訓練營打卡Day41(2025.5.31)

知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 → Batch歸一化層…

樂觀鎖:高效并發無鎖方案

4.樂觀鎖 這一章主要介紹樂觀鎖。前面的管程部分講了悲觀鎖&#xff0c;現在做一些總結&#xff1a; 悲觀鎖&#xff08;Pessimistic Lock&#xff09;&#xff1a;悲觀鎖認為數據在多線程或多進程環境下總是容易發生沖突/沖突的概率高&#xff0c;所以在數據操作前&#xff…

山海鯨輕 3D 渲染技術深度解析:預渲染如何突破多終端性能瓶頸

在前期課程中&#xff0c;我們已系統講解了山海鯨兩大核心渲染模式——云渲染與端渲染的技術特性及配置方法。為滿足復雜場景下的差異化需求&#xff0c;山海鯨創新推出輕3D渲染功能&#xff0c;本文將深度解析該技術的實現原理與操作實踐。 一、輕3D功能研發背景 針對多終端協…

【合集】Linux——31個普通信號

Linux普通信號總表&#xff08;1-31&#xff09;?? ?編號??信號名??觸發原因??默認動作?1SIGHUP終端連接斷開&#xff08;如SSH會話終止&#xff09;或守護進程重載配置&#xff08;如nginx -s reload&#xff09;終止進程2SIGINT用戶輸入CtrlC中斷前臺進程終止進程…

小程序使用npm包的方法

有用的鏈接 npm init -y 這個命令很重要, 會初始化 package.json 再重新打開微信小程序開發工具 選擇工具中npm構建 在程序中引用時在main.js中直接使用包名的方式引用即可 如安裝的是generator包&#xff0c;npm構建后就會生成 const myPackage require(***-generato…

騰訊云推出云開發AI Toolkit,國內首個面向智能編程的后端服務

5月28日&#xff0c;騰訊云開發 CloudBase 宣布推出 AI Toolkit&#xff08;CloudBase AI Toolkit&#xff09;&#xff0c;這是國內首個面向智能編程的后端服務&#xff0c;適配 Cursor 等主流 AI 編程工具。 云開發 AI Toolkit旨在解決 AI 輔助編程的“最后一公里”問題&…

系統是win11+兩個ubuntu,ubuntu20.04和ubuntu22.04,想刪除ubuntu20.04且不用保留數據

在 Ubuntu 22.04 的終端里運行這些命令: 重啟電腦&#xff0c;選擇啟動 Ubuntu 22.04&#xff1b;打開終端&#xff1b;從 lsblk 開始操作。 如果你不確定當前啟動的是哪個系統&#xff0c;可以在終端輸入&#xff1a; lsb_release -a它會輸出&#xff1a; Distributor ID: …

大模型應用開發第三講:大模型是Agent的“大腦”,提供通用推理能力(如GPT-4、Claude 3)

大模型應用開發第三講&#xff1a;大模型是Agent的“大腦”&#xff0c;提供通用推理能力&#xff08;如GPT-4、Claude 3&#xff09; 資料取自《大模型應用開發&#xff1a;動手做AI Agent 》。 查看總目錄&#xff1a;學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的…

第十四篇:MySQL 運維中的故障場景還原與排查實戰技巧

本篇通過典型故障場景的還原與分析&#xff0c;幫助你掌握高效、系統的 MySQL 故障排查與應急處理方法&#xff0c;構建穩定可靠的數據庫運維體系。 一、故障排查的基本思路 快速定位問題入口&#xff1a; 錯誤日志、連接報錯、監控告警&#xff1b; 確認影響范圍&#xff1a…

MySQL 分頁查詢優化

目錄 前言1. LIMIT offset, count 的性能陷阱&#xff1a;為什么它慢&#xff1f;&#x1f629;2. 優化策略一&#xff1a;基于排序字段的“跳躍式”查詢 (Seek Method) &#x1f680;3. 優化策略二&#xff1a;利用子查詢優化 OFFSET 掃描 (ID Subquery)4. 基礎優化&#xff1…

使用curlconverter網站快速生成requests請求包

在python寫requests請求的時候&#xff0c;抓包后需要復制粘貼包的內容&#xff0c;然后手動修改和寫代碼。 最近發現一個好的網站 https://curlconverter.com/python/ 可以復制curl(bash)數據后&#xff0c;直接生成數據包&#xff0c;非常便捷。 舉例說明&#xff1a; 選…

python打卡day41

簡單CNN 知識回顧 數據增強 卷積神經網絡定義的寫法 batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據 特征圖&#xff1a;只有卷積操作輸出的才叫特征圖 調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 →…

系統思考:化繁為簡的藝術

系統思考&#xff0c;其實是一門化繁為簡的藝術。當我們能夠把復雜的問題拆解成清晰的核心以及更加簡單&#xff0c;從而提升團隊的思考品質和行動品質&#xff0c;發揮最大的合力。 每個公司都想在某方面成為最優秀的&#xff0c;但是實際上具有穿透性的洞察力和擺脫虛榮心的清…

2025.05.28【Parallel】Parallel繪圖:擬時序分析專用圖

Improve general appearance Add title, use a theme, change color palette, control variable orders and more Highlight a group Highlight a group of interest to help people understand your story 文章目錄 Improve general appearanceHighlight a group探索Paralle…

Elasticsearch父子關系解析

引言 在復雜業務場景中&#xff0c;數據關聯查詢是搜索與分析的核心需求。以電商訂單、文章評論、客戶關系等場景為例&#xff0c;傳統關系型數據庫通過外鍵實現的多表關聯&#xff0c;在分布式搜索場景下面臨性能與擴展性挑戰。Elasticsearch通過父子關系&#xff08;Parent-…

MCP架構全解析:從核心原理到企業級實踐

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦&#xff1a;「storms…

開發者體驗提升:打造高效愉悅的開發環境

“開發者體驗不是奢侈品&#xff0c;而是生產力的倍增器。優秀的工具鏈能讓開發者從機械勞動中解放&#xff0c;專注于創造真正有價值的東西。” —— 前端架構師 Sarah Drasner 1. 自定義 CLI 工具開發 (1) 基于 plop.js 的組件模板生成器 痛點分析&#xff1a;在大型項目中…

運用集合知識做斗地主案例

方法中可變參數 一種特殊形參&#xff0c;定義在方法&#xff0c;構造器的形參列表里&#xff0c;格式&#xff1a;數據類型...參數名稱&#xff1b; 可變參數的特點和好處 特點&#xff1a;可以不傳數據給它&#xff1b;可以傳一個或者同時傳多個數據給它&#xff1b;也可以…

websocket在vue中的使用步驟,以及實現聊天

一、WebSocket集成步驟 ?連接初始化? 在Vue組件中創建WebSocket實例&#xff0c;建議在mounted生命周期中執行&#xff1a; data() {return {socket: null,messages: []} }, mounted() {this.socket new WebSocket(wss://your-server-endpoint); }?事件監聽配置 ?連接成…

HarmonyOS鴻蒙Uniapp三方框架

鴻蒙Uniapp三方框架集成指南 一、環境配置 // 安裝必要依賴 npm install ohos/hvigor-ohos-plugin --save-dev // 配置harmony模塊 "harmony": {"compileSdkVersion": 9,"compatibleSdkVersion": 8,"arktsVersion": "1.0.0&quo…