在C語言中,沒有字符串類型,那它是怎么表示字符串呢? 由於字符串是一系列單個字符的組合,所以它用char 類型的數組來表示字符串,在數組中,一個數組元素存放一個char類型字符。
char name[40];
name 變量就可以存放字符串了,並且最多只能存儲40個字符。那我們怎么給變量name賦值呢,最簡單的辦法,就是用字符串常量。字符串常量的寫法和我們平時的寫法還是一樣的,用雙引號括起來,如“Zing went the strings of my heart”; 字符串常量寫好后,就可以像下面一樣進行賦值
name=”Zing went the strings of my heart”;
賦值成功后,它在內存中的表示形式如下:
你可能已經注意到數組末尾位置有一個字符\0, 它是空字符,表示字符串的結束。C語言中,字符串一定以空字符結束,這意味着聲明數組的容量必須比它要存儲的字符串的長度多1;在這里,str字符串的長度是40, 我們只能存儲39個字符, 剩下一位留給空字符。
strlen() 函數則是獲取到字符串的長度,strlen(str) 結果為33, 它包含在string.h 頭文件中,所以使用這個方法之前,要先引進這個頭文件 #include<string.h>
#include <stdio.h> #include <string.h> // 引進頭文件string.h int main() { char str[40] = "Zing went the strings of my heart"; printf("%u", strlen(str)); // 調用strlen 獲取字符串的長度 return 0; }
順便說一下常量的定義:
1,使用預處理器定義常量。在程序的頭部#define PI 3.1415 在編譯時,程序中的所有常量PI,都會被替換成3.1415. 這一過程也稱之為編譯時替換。
2,const 也可以用來聲明常量,const double PI = 3.1415;
#include <stdio.h> #define PI 3.1415 // 定義常量 int main() { const int r = 5; printf("%f %d", PI, r); return 0; }
Printf()函數: 打印字符串,它的格式如下:
Printf(格式化字符串,待打印的參數1,待打印的參數2,.....待打印的參數n), 看一下下面這段打印代碼,
printf(“The %d person ate %f berry pies. \n”, number, pies);
格式化字符串就是雙引號括起來的內容,為什么叫格式化字符串,因為它里面有%d, %f, 這樣的轉換說明,就是后面要打印的項,以什么格式進行輸出。%d表示以整數時行輸出,%f 以浮點數進行輸出。
還有其它幾個常用的格式說明,
%e或 %E,以e記數法來表示浮點數
%s 字符串
%% 打印一個百分號
%c: 單個字符
這樣我們在使用printf 的時候,就比較清楚了,我們要打印多少項,就要把它們在格式化字符串后面依次列出,同時在格式化字符串中匹配對應的格式說明,這里一定要注意,格式字符串中的轉換說明的個數一定要和待打印項的個數一致,它們一一匹配。當然,如果只是打印字符串,就直接寫要打印的字符串就好了,就不用轉換說明了。Printf(“Hello World”)
轉換說明修飾符: 就是在% 和d 之前可以加說明,表示對待打印項進一步的修飾。如%.2f 就是表示小數點后面保留兩位小數。 %5d表示整數的寬度為5,但是如果指定的字寬小於原有數的字寬,字段寬度會自動增加。
#include <stdio.h> #define PI 3.1415 // 定義常量 int main() { const int r = 5; int num = 100; // PI小數點后面成了2位,r占了5個字寬,num 雖然設了兩個字寬,但這還是占3個 printf("%.2f %5d %2d", PI, r, num); return 0; }
打印較長的字符,printf()可以接受多個字符串,編譯的時候,會自動它拉連接到一起,如 printf(“this is a ” “best person”)
Scanf()讀取輸入的內容
當我們使用鍵盤進行輸入的時候,輸入的永遠是字符,比如我們輸入2018, 我們實際上是依次輸入4個字符2,0,1,8, 所以我們要告訴scanf,他表示的是數字,所以還是用到了格式說明。scanf()的第一個參數,格式轉換說明,后面則是讀取的值要存入的變量。格式轉換說明,和printf()函數一致
scanf(“%d %d”, &num1, &num2); //一定要注意變量前面的&符號,變量存儲的是基本數據類型時,讀取的時候,前面一定要加&
當用鍵盤輸入多個數值時,中間用空格隔開,空格前面的就會賦給第一個參數,空格后面就會賦值給第二個參數。但這里要注意字符串的讀取,scanf() 函數讀取我們輸入的字符串時,在遇到第1個空白(空格、制表符,換行符)時,就不會再讀取輸入。 scanf 去讀取 angela palains 時,它只會讀取 angela.