第九章 字串.

Slides:



Advertisements
Similar presentations
資料坐火車 …… 談陣列 (Array) 綠園 2008/12/15. Array 的宣告 整數陣列的宣告  int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1]
Advertisements

綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
第一單元 建立java 程式.
电子成绩单项目实现.
道路交通管理 授课教师:于远亮.
第九章 字串 (String).
第四章 陣列、字串與排序.
陣列與字串 Java陣列特性 一維陣列 多維陣列 字串 字串的相關函數 字串緩衝器類別.
補充: Input from a text file
File Access 井民全製作.
第六讲 指针与字符串 —— 为什么指针 —— 持久动态内存分配 —— 字符串(字符数组).
資料結構 第2章 陣列.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
第六章 数 组 主讲教师 贾月乐 联系电话:
第十一章 結構.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
Visual C++ introduction
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 指定字串的初值 8-3 指標與字串 8-4 字串處理 8-5 C語言的字串函數.
列舉(enum).
程序设计II 第三讲 字符串处理.
String C語言-字串.
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
Introduction to the C Programming Language
C語言簡介 日期 : 2018/12/2.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
Introduction to the C Programming Language
Introduction to the C Programming Language
第3章 指標與字串 (Pointers and Strings)
Java 程式設計 講師:FrankLin.
字符串和字符数组 字符串的输入和输出 字符串的基本操作
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
函 数 实验八 第24讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
Chapter 5 複合資料型態.
数组 梁春燕 华电信息管理教研室.
陣列(Array).
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
輸入&輸出 函數 P20~P21.
第十章 指標.
深度學習C++ Chapter 7 簡易字串 深度學習 C++ 簡易字串.
C语言复习3----指针.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
挑戰C++程式語言 ──第8章 進一步談字元與字串
函式庫補充資料.
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
C qsort.
C程序设计.
挑戰C++程式語言 ──第7章 輸入與輸出.
第14章 結構與其他資料形式.
陣列與結構.
實習八 函式指標.
1757: Secret Chamber at Mount Rushmore
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Introduction to the C Programming Language
Programming & Language Telling the computer what to do
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
字串 第10章 part I 8/30/2019.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
Unix指令4-文字編輯與程式撰寫.
C语言基础学习 从外行到入门.
InputStreamReader Console Scanner
Presentation transcript:

第九章 字串

本章學習重點 9-1 字串的基本架構 9-2 字串的輸入及輸出 9-3 字串的函數

9-1-1字串的定義 字串(String) 在C語言中使用來儲存一串字元的一種資料結構 字串 字元陣列 比字元陣列多出一個控制字元『\0』,用來表示字串的結束 字串 char a[ ]=”String”; char a[ ]={‘S’, ’t’, ’r’, ’i’, ’n’, ’g’, ’\0’}; 字元陣列 char b[ ]={‘S’, ’t’, ’r’, ’i’, ’n’, ’g’};

9-1-2 字串的宣告(一維陣列) 語法 char str[7]={‘H’, ’e’, ’l’, ’l’, ’o’, ’!’, ’\0’}; 以類似字元陣列宣告 char str[7]=”Hello!”; 直接字串命名的方式 char str[ ]=”Hello!”; 編譯器會自動配置記憶體空間

範例 Ch9_2(1/2) ch9_2 輸出字串中每一個元素的內容及位址 1 #include<stdio.h> 2 void main( ) 3 { 4 int i = 0; 5 char str[ ] = "example"; 6 while(str[i]!=‘\0’) { printf("%c", str[i]); 9 printf(" %d\n", &str[i]); i++; } 12 }

ch9_2 輸出結果 (2/2) 程式執行結果 e 1245044 x 1245045 a 1245046 m 1245047 p 1245048 l 1245049 e 1245050

9-1-3 字串的宣告(二維陣列) str[2][8]={“string1”, ”string2”}; 在陣列中的擺放位置如下 Column(行) Row (列) str[0][0] str[0][1] str[0][2] str[0][3] str[0][4] str[0][5] str[0][6] str[0][7] s t r i n g 1 \0 str[1][0] str[1][1] str[1][2] str[1][3] str[1][4] str[1][5] str[1][6] str[1][7] 2

範例 Ch9_3(1/2) ch9_3 建立一個存放一到四的字串陣列,並且將之輸出 1 #include<stdio.h> 2 void main( ) 3 { 4 int i; 5 char str[4][10]={“one”, ”two”, ”three”, ”four”}; 6 for(i=0; i < 4; i++) 7 printf(“%s\n”, str[i]); 8 }

Ch9_3 輸出結果 (2/2) 程式執行結果 one two three four  

9-2 字串的輸入及輸出 9-2-1 字串的輸入 scanf( ) gets( ) 宣告方式 宣告格式 結束條件 遇到空白字元時 ,並不會結束,其結束的條件為遇到結束符號『\0』 宣告方式 宣告格式 結束條件 未指定欄寬 scanf(“%s”, str); 當讀到空白字元 指定欄寬 scanf(“%#s”, str); /*其中#表示一正整數*/ 1. 讀到空白字元時 2. 超過指定欄寬時

範例 Ch9_4(1/2) ch9_4 利用scanf( )輸入字串,並輸出 1 #include<stdio.h> 2 void main( ) 3 { 4 char str[10]; 5 printf("請輸入一字串:"); 6 scanf(“%6s”, str); /*指定欄寬為6個字元*/ 7 printf("輸入的字串為:%s", str); 8 }

ch9_4 輸出結果 (2/2) 程式執行結果 請輸入一字串:123456789 輸入的字串為:123456

範例 Ch9_5(1/2) ch9_5 使用gets( )輸入字串,並將之輸出 1 #include<stdio.h> 2 void main( ) 3 { 4 char str[20]; 5 printf(“請輸入一字串:”); 6 gets(str); 7 printf(“輸入的字串為:%s”, str); 8 }

Ch9_5 輸出結果 (2/2) 程式執行結果 請輸入一字串:This is a pen 輸入的字串為:This is a pen

9-2 字串的輸入及輸出 9-2-2 字串的輸出 printf( ) puts( ) 一次能輸出多個字串 具格式化輸出的功能 一次只能輸出一個字串 不具格式化輸出的功能 每輸出一個字串,puts( )也將輸出一個跳列字

範例 Ch9_6 (1/2) ch9_6 以gets( )輸入字串,且以puts( )輸出字串 1 #include<stdio.h> 2 void main( ) 3 { 4 char input[20]; 5 puts(“請輸入字串:”); 6 gets(input); 7 puts(input); 8 }

Ch9_6 輸出結果 (2/2) 程式執行結果 請輸入字串: This is a pen

9-3 其它字串的處理函數 使用前,需加入string.h的標頭檔 strlen( ) : 計算字串長度 strcmp( ):比較兩個字串 strcpy( ):將字串一複製到字串二 strcat( ):合併字串一及字串二 toupper( ):將字串內容轉換成大寫字母 tolower( ):將字串內容轉換成小寫字母

範例 Ch9_9 (1/2) ch9_9 輸入一個字串,計算出該字串的長度 1 #include<string.h> /*因使用strlin( )函數,需叫用標頭檔*/ 2 #include<stdio.h> 3 void main( ) 4 { 5 char str[30]; 6 int number; 7 printf("請輸入一字串:"); 8 gets(str); 9 number = strlen(str); /*呼叫strlen( )函數,求出str的長度*/ 10 printf("\n字串長度為:%d", number); 11 }

Ch9_9 輸出結果 (2/2) 程式執行結果 請輸入一字串:This is a pig 字串長度為:13

9-3-2 strcmp( )函數 語法 說明 整數型態變數 = strcmp(字串陣列名稱一, 字串陣列名稱二); 整數型態變數 0代表兩個字串相同 負數及正數皆表示為不相同字串 strcmp( ) 會將字串一與字串二做一比較,看是否相同

範例 Ch9_10 (1/3) ch9_10 設計一個程式,檢查輸入的字串是否相同 1 #include<stdio.h> 2 #include<string.h> /*因使用strcmp( )函數,需叫用標頭檔*/ 3 void main( ) 4 { 5 char str1[20]; 6 char str2[20]; 7 int i; 8 printf("請輸入第一個字串:"); 9 gets(str1);

範例 Ch9_10 (2/3) 10 printf("請輸入第二個字串:"); 11 gets(str2); 12 i = strcmp(str1, str2); /*比較str1,str2字串是否相同*/ 13 if(i == 0) 14 printf("輸入的兩個字串為相同的字串!"); 15 else 16 printf("輸入的兩個字串為不相同的字串!"); 17 }

Ch9_10 輸出結果 (3/3) 程式執行結果 請輸入第一個字串:computer 請輸入第二個字串:computer 輸入的兩個字串為相同的字串!   請輸入第二個字串:mouse 輸入的兩個字串為不相同的字串!

9-3-3 strcpy( )函數 語法 說明 strcpy(字串1, 字串2); 字串1:將要被複製成跟字串2相同內容的字串 字串2:將要複製給字串1的字串  此函數可將字串2變數的內容拷貝到字串1的內容(包含空字元)

範例 Ch9_11(1/2) ch9_11 使用者輸入一個字串,程式將以該字串覆蓋原程式內定的字串 1 #include<stdio.h> 2 #include<string.h> /*因使用strcpy( )函數,需叫用標頭檔*/ 3 void main( ) 4 { 5 char str1[30] = ”This is an original string”, str2[30]; 6 printf("請輸入一字串: "); 7 gets(str2); 8 printf(“原先內定字串1的內容為: %s\n”, str1); 9 strcpy(str1, str2); 10 printf("複製過後的字串1內容為: %s", str1); 11 }

Ch9_11 輸出結果 (2/2) 程式執行結果 請輸入一字串:This is my input 原先內定字串1的內容為: This is an original string 複製過後的字串1內容為: This is my input

9-3-4 strcat( )函數 語法 說明 strcat(str1, str2);

範例 Ch9_12(1/2) ch9_12 使用strcat( )函數,將兩個字串合併為一,並輸出 1 #include<stdio.h> 2 #include<string.h> /*因使用strcat( )函數,需叫用標頭檔*/ 3 void main( ) 4 { 5 char str1[20]=”Taiwan ”; 6 char str2[ ]=”University”; 7 printf(“合併前 str1內容為: %s str2內容為: %s\n“, str1, str2); 8 strcat(str1, str2); 9 printf(“合併後 str1內容為: %s str2內容為: %s\n”, str1, str2); 10 }

Ch9_12 輸出結果 (2/2) 程式執行結果 合併前 str1內容為: Taiwan str2內容為: University 合併後 str1內容為: Taiwan University str2內容為: University  

9-3-5 toupper( )函數及tolower( )函數 語法 陣列名稱[索引值] = tolower( 陣列名稱[索引值] ); 陣列名稱[索引值] = toupper( 陣列名稱[索引值] ); 說明 需加入ctype.h的標頭擋 toupper( )函數可以將字元強制轉換成大寫 tolower( )函數則可以將字元強制轉換成小寫

範例 Ch9_13(1/3) ch9_13 將輸入的小寫字串轉換成大寫,並將輸入的大寫字串轉換成小寫 1 #include<stdio.h> 2 #include<ctype.h> /*使用toupper( )函數及tolower( )函數*/ 3 void main( ) 4 { 5 int i; 6 char str1[10]; 7 char str2[10]; 8 printf(“請輸入字串一: ”); 9 gets(str1); 10 printf(“請輸入字串二: ”); 11 gets(str2);

範例 Ch9_13(2/3) 12 for (i = 0 ; str1[i] != ’\0’; i++) 13 str1[i] = tolower( str1[i] ); 14 for (i = 0 ; str2[i] != ’\0’; i++) 15 str2[i] = toupper( str2[i] ); 16 printf(“大寫轉換成小寫: %s\n“, str1); 17 printf(“小寫轉換成大寫: %s “, str2); 18 }

Ch9_13 輸出結果 (3/3) 程式執行結果 請輸入字串一: ABC 請輸入字串二: efg 大寫轉換成小寫: abc