字元 字串的輸入輸出

2021-10-04 08:34:05 字數 3380 閱讀 8828

字元與字串的輸入輸出

如果要使用現成的字串函式和方法,就一定要加上對應的標頭檔案,

如果在c++當中呢,就是 #include ,如果是在c當中呢,就是

#include

4.1字元,字串的輸入輸出

char c;

字元的輸入輸出:

scanf("%c",&c); printf("%c",c); //接收單個字元;

字串的輸入輸出:

char *str=new char; //首先定義乙個字元陣列來作為字串來接收

scanf("%s",str); printf("%s",str); //輸入的時候是%s,並且輸入時不需要加引號了,

因為str就是乙個字元陣列,它本身就代表了位址

這種情況下需要注意呢,它是以空格作為間隔符的,也就是這個字串當中呢,不能出現空格

如果出現空格它認為是就不再是乙個字串了

如果是在c++當中呢,就是cin(讀作「c in」)和cout(讀作「c out「),直接接上這個字串即可;

即: cin>>str; cout《那麼如果乙個字串當中有空格,而且這個空格呢是字串的一部分,例如「zhou zhiguo」

這種情況下就不能用這個%s來輸入和輸出了,那麼可以用什麼呢?用gets和puts這兩個函式來進行字串的輸入和輸出

gets(str); puts(str); //以回車作為間隔符

當然除了這種呢,還有個c++中的叫getline的函式,如下操作即可:

getline(cin,str); //以回車作為間隔符

那麼除了輸入輸出以外呢,字元和字串呢還有一些相關的處理函式我們大致看一看

4.1.2字元處理函式

這個字元的處理函式呢一定要注意,不是在這個標頭檔案裡,它是在這個標頭檔案裡面,它提供了一些有關字元的一些基本函式

在ctype.h標頭檔案中,主要有:

①int isdigit(int c) //判斷c是否是數字字元,是則返回1,否則返回0,下同

②int isalpha(int c) //判斷是否為字母

③int isalnum(int c) //是否是乙個數字或字母

④int islower(int c) //是否為小寫字母

⑤int isupper(int c) //是否為大寫字母

⑥int toupper(int c)		//如果是乙個小寫字母,則返回其大寫字母

⑦int tolower(int c) //如果c是乙個大寫字母,則返回其小寫字母

但是如果大家程式設計能力還可以的話,大家自己程式設計也可以實現,很簡單的乙個函式

4.1.3 字串和記憶體操作函式

宣告在標頭檔案中,它提供的操作函式比較多,我們也不需要一一去記,這裡面有幾個常用的,先來告訴大家:

①char * strcpy(char * s1,char *s2); //將字串s2的內容拷貝到s1中去

這是字串拷貝函式,然後我們還有乙個最主要的需要大家學會用的就是strcmp(周老師讀作:string compare)這個函式:

②int strcmp(char * s1,char *s2); //這個函式只要是用來比較s1和s2之間的關係,比較它倆是否相等,這個1是否相等呢一定要注意它是區分大小寫的,如果返回值小於0,就說明s1呢要比s2小,也就是說s1按照字典順序的話s2的前面,字典的順序就是按照a,b,c,d這樣的順序,我們需要知道的呢,小寫字母呢,假設小寫字母a ascii碼的值97,大寫字母a呢,是65,它相差32個,也就是說小寫字母要比同樣的大寫字母呢,實際上是要在後面的,它要是大的;那麼返回值如果等於0,實際上這兩個字串呢,完全一樣,字串的長度相等然後每個對應位置上的字元呢,都一樣的;那麼如果大於0呢,就說明s1呢,按字典順序它應該在s2的後面。

那麼接下來需要大家學會使用的呢,就是strlen函式

③int strlen(const char *string):計算字串的長度

//這個就是這個字串的長度,求這個字串的長度呢我們自己顯現出來也很容易,就是從第乙個字元開始數,數到\0為止,對吧,因為我們學過c語言知道字串的結束標記呢是\0,其實這個函式呢,它實現也是這麼實現的;

所以以上③個函式要求大家呢,一定要會用,乙個是字串比較,乙個呢是求字串的長度,其他的呢,如果能記住呢,當然最好了,因為會在程式設計的時候或多或少可能會用到一些。

那麼還有兩個,乙個是memcpy(周老師讀作「memory copy」)記憶體拷貝:

void * memcpy(void *s1,void * s2,int n); //將記憶體位址s2處的n位元組內容拷貝到記憶體位址s1上。

然後呢,還有個memset(周老師讀作「memory set」),這個呢,也很重要,就正常我們初始化的時候,尤其是對陣列進行初始化的時候,我們有時候偷懶,不想用for迴圈乙個乙個地去初始化,那麼也就是說假設我有100個長度的陣列,我想把這個陣列裡面所有的元素,值,都初始化成0,用它呢,就非常簡單,就memset,然後前面我們已經見過了:

void * memset( void *s,int c,int n); //將記憶體位址s開始的n個位元組全部置為c.

//s是該陣列的名字,然後c是你要初始化成為的值,n是這個陣列n個位元組

4.1.4 字串轉換函式

那麼除此之外呢,還有字串的轉換函式,這個轉換函式呢,主要是用來實現字串和其他資料型別之間的轉換

第乙個呢,就是atoi (周老師讀作:a to i),就是把「1234」這樣形式的字串變成數值型別

①int atoi(char *s); //將字串s中的內容轉換成乙個整型數返回,比如,如果字串s中的內容是「1234」 (一定要注意哈,這是雙引號的,雙引號表示字串),那麼函式返回值就是1234.

②double atof(char *s); //將字串s中的內容轉換成浮點數

③char *itoa(int value,char *string ,int radix); //和atoi正好相反,也就是說把資料轉換成相應的字串,將整型值value以radix進製表示法寫入string。比如:

char szvalue[20];

itoa(32,szvalue,10); //也就是說把十進位制32這個數,變成了字串的32

itoa(32,szvalue,16); //那麼這個還是32,但是在這裡面它轉換成的是16進製制的字串「20」(讀作「二零」,不是二十)

**那麼這些呢就是有關字串,輸入輸出,以及相關的一些函式,我們簡單了解一下,那麼下面呢,我們就通過具體的例子,針對於具體的問題,來看一看如何利用字串,這些函式,來進行問題的分析和處理**

字元 字串的輸入 輸出

提前宣告 c字串為char或char 型別,include 而c 字串為string型別。include 定義c字串時,有如下問題 char str hello world 必須初始化 char str 3 想要不初始化,必須指定長度 char str 沒有分配記憶體,且無法用字串常量初始化,否則報...

字串的輸入輸出

1.字串陣列 初始化 char s1 array 字元陣列 char s2 6 array 陣列長度 字串長度 1,因為字串末尾會自動添 0 printf s,c n s1,s2 2 2.字串指標 初始化 char sp pointer 字元指標 printf s,c,c n sp,sp,sp 2 ...

c c 字元 字串輸入輸出

1.scanf 1.1 輸入字元 char ch scanf c ch 注意字元前面的取位址符 1.2 輸入字串 char str 15 scanf s str char pstr scanf s pstr 1 scanf 在輸入字串時,不讀入空格和回車,在讀入空格或回車時,輸入結束 2 輸入字串長...