iOS概念入門學習-C語言-字符串

概要:本文介紹了字符串的概念、定義方法和常用的函數,並用實例加以串聯以說明字符串的用法。

一、 字符串

1.字符串的概念

字符串是位於雙引號中的字符序列。字符串即字符數組。
在內存中以“\0”結束,所佔字節比實際多一個
這裏寫圖片描述
注意:
1. 可以把一個字符常量賦給一個字符變量,但不能把字符串常量賦給字符變量
2. C語言中沒有字符串變量,可以用字符數組來存放字符串
Printf("hello world!");
Char ch[10]="ab";

2.字符串的定義

定義格式:char 數組名[常量表達式] 
例如:char c[10]; 

字符數組也可以是二維或多維數組。如:
char 數組名[常量表達式1][常量表達式2]
例如:char c[5][10]; 即爲二維字符數組。

注意:定義字符數組時,應確保數組長度比字符串長度至少多1(存放’\0’)

3.字符串初始化

1)定義同時進行初始化
char c[5]={'a','b','c','d'};
2)部分初始化
char d[10]={'a','b','c'};
3)先定義再初始化
char e[5];
e[0]='a';
e[1]='b';

二、字符串的使用

1.輸入輸出

1)printf和scanf

使用printf和scanf進行輸入和輸出時,需要用到%s佔位符,%s 從給定的地址開始,輸出字符直到遇到\0結束。應該說明的是,對一個字符數組,如果不做初始化賦值,則必須說明數組長度,還應該特別注意的是,當用scanf函數輸入字符串時,字符串中不能含有空格,否則將以空格作爲串的結束符。

    char a[100];
    printf("請輸入一個字符串\n");
    scanf("%s",a);
    printf("%s",a);

2)puts和gets

puts在輸出字符串時會自動換行,但與printf不同的是,puts不能進行格式化輸出。gets相對於scanf來說好處在於gets函數並不以空格爲字符串結束輸入的標誌,而只以回車作爲結束標誌。

 char f[100];
 gets(f);
 puts(f);

但是scanf和gets缺點就在於若是用戶輸入了超過數組指定長度的字符串,程序將 報錯。

3)fputs和fgets

i) fgets

格式:fgets(數組名,數組長度,stdin)
fgets從輸入緩衝區讀取一個字符串保存到字符數組中,當輸入的字符串的長度大於數組的長度,此時fgets會自動的把數組的最後一個元素變成\0,當輸入的字符串的長度小於數組長度的時候,fgets還會接收回車。

ii) fputs

格式:fputs(數組名,stdout);
fputs是不會自動換行,也不能進行格式化的輸出,而puts 可以自動換行

4)幾種輸入輸出方式的比較

i) printf和scanf

優點:可以格式化輸出。
缺點:printf不能自動換行,scanf中不能有空格

ii) puts和gets

優點:gets可以接受空格
缺點:使用gets會有一個警告,並且當我們輸入的字符數大於字符串長度時程序會報錯。

iii) fputs和fgets

fgets()、fputs()最大的優點是幫我們自動截取輸入的字符串,使得我們對字符串 的存取是安全的。

2.其他字符串處理函數

下面將介紹幾個字符串的常用函數,介紹完概念之後,將用一個程序把所有函數的用法表現出來。

1)字符串連接函數 strcat

格式: strcat(字符數組名1,字符數組名2) 

功能:把字符數組2中的字符串連接到字符數組1 中字符串的後面,並刪去字符串1後的串標誌 “\0”。本函數返回值是字符數組1的首地址。
本函數把初始化賦值的字符數組與動態賦值的字符串連接起來。要注意的是,字符數組1應定義足夠的長度,否則不能全部裝入被連接的字符串。

2)字符串拷貝函數strcpy

格式: strcpy(字符數組名1,字符數組名2) 

功能:把字符數組2中的字符串拷貝到字符數組1中。串結束標誌“\0”也一同拷貝。字符數名2, 也可以是一個字符串常量。這時相當於把一個字符串賦予一個字符數組。
本函數要求字符數組1應有足夠的長度,否則不能全部裝入所拷貝的字符串。

3)字符串比較函數strcmp

格式: strcmp(字符數組名1,字符數組名2) 

比較規則:
對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現不同的字符或遇到‘\0’爲止。如果全部字符相同,則認爲相等;若出現不相同的字符,則以第一個不相同的字符的比較結果爲準。
如果兩個字符串都由英文字母組成,則有一個簡單的規律:在英文字典中位置在後面的爲“大”,還要特別注意:小寫字母比大寫字母“大”。
返回值:
- (1)字符串1=字符串2,返回0
- (2)字符串1>字符串2,返回一個正整數
- (3)字符串1<字符串2,返回一個負整數。
本函數也可用於比較兩個字符串常量,或比較數組和字符串常量。

實例如下:
這裏寫圖片描述

總結:字符串是一種日常編程經常會用到的類型,可以用來存儲各種信息,並對信息做一些處理,掌握好常用字符串函數,對於日後的編程學習很有用處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章