字串和字串陣列

2021-09-11 21:08:17 字數 4020 閱讀 1072

字串陣列

#include int main(int argc, const char * ar**) ;

printf("name1 --> %s\n", name1); // name1 --> zhangsan

// 部分初始化中,沒有被初始化的元素預設是0, \0 對應的ascii值是 0

char name2[9] = ;

printf("name2 --> %s\n", name2); // name2 --> zhangsan

// 字串的本質就是陣列

char name3 = "lisi";

printf("name3 --> %s \n", name3); // name3 --> lisi

name3[0] = 'x';

printf("name3 --> %s \n", name3); // name3 --> xisi

return 0;

}

字串輸出

字串輸出可以使用printf 和 puts 進行輸出,各有利弊

- 輸出字串

- 使用printf的%s佔位符輸出

- 弊端:如果想要換行,必須加上\n

- 優點:可以自定義格式化需要的字串,也就是可以按照我們需要的格式來輸出

- 使用puts函式進行輸出

- 優點:可以自動換行

- 缺點:不可以自定義格式,只能原樣輸出

// printf

char str = 「lisi」;

printf(「name = %s!!!\n」, str);

printf("-----\n");

// puts

// 自動換行,只能原樣輸出

puts(str);

printf("----\n");

#### 字串輸入

字串輸入可以使用 scanf 和 gets 進行輸入,各有利弊

使用gets接收字串

// scanf

printf("請輸入乙個字串:\n");

char buf[10];

scanf("%s", buf); // 輸入:fdsa fdas

printf("buf --> %s\n", buf); // buf --> fdsa

// gets

char buf[10];

printf("請輸入乙個字串,使用gets接收:\n");

gets(buf);

printf("buf --> %s\n", buf); // buf --> fdsaf fdsa

字串常用方法

計算字串的長度

#include #include // 申明函式

int stringlen(char value);

int main(int argc, const char * ar**)

// 自定義計算字串長度的函式

int stringlen(char value)

return count;

}

字串拼接

使用內建方法strcat進行2個字串拼接,將後者拼接到前者後面,前提是前者空餘的長度要大於後者的長度,否則會報錯

使用內建方法strncat進行2個字串拼接,可以指定將後者的前多少個字元與前者進行拼接

// 字串拼接

char str1[20] = "hello";

char str2[10] = " world";

printf("str1拼接前 --> %s\n", str1); // str1拼接前 --> hello

printf("str2拼接前 --> %s\n", str2); // str2拼接前 --> world

strcat(str1, str2);

printf("\n");

printf("str1拼接後 --> %s\n", str1); // str1拼接後 --> hello world

printf("str2拼接後 --> %s\n", str2); // str2拼接後 --> world

// 使用 strncat 可以指定將後者的前多少個字元與前者進行拼接

strncat(str1, str2, 3); // 最後乙個引數3表示指定str2的前多少個字元拼接到str1後面

printf("str1拼接後 --> %s\n", str1); // str1拼接後 --> hello world wo

printf("str2拼接後 --> %s\n", str2); // str2拼接後 --> world

字串拷貝

strcpy 函式會將源的資料拷貝到目錄中,並且會覆蓋掉目標中原有的資料,目標的長度必須能夠存放拷貝的資料,長度不夠會報錯

strncpy 函式在strcpy函式的基礎之上,增加乙個引數,可以指定拷貝幾個字元0

// 將str2中的內容拷貝到str1中

char str1[20] = "hello";

char str2 = " world!";

printf("str1 拷貝前 --> %s\n", str1); // str1 --> hello

printf("str2 拷貝前 --> %s\n", str2); // str2 --> world!

strcpy(str1, str2);

printf("str1 拷貝後 --> %s\n", str1); // str1 --> world!

printf("str2 拷貝後 --> %s\n", str2); // str2 --> world!

// strncpy 函式在strcpy函式的基礎之上,增加乙個引數,可以指定拷貝幾個字元

char str3[20] = "hello";

char str4 = "_world!";

strncpy(str3, str4, 2);

printf("str3 拷貝後 --> %s\n", str3); // str3 拷貝後 --> _wllo

printf("str4 拷貝後 --> %s\n", str4); // str4 拷貝後 --> _world!

字串比較

strcmp 會對傳入的字串進行比較,比較完畢後會返回乙個整型的值

/*

int result = strcmp(str1, str2)

如果result等於0,證明兩個字串相等

如果result小於0,證明str1小於str2

如果result大於0,證明str1大於str2

*/char str1 = "abc";

char str2 = "abc";

int result = strcmp(str1, str2);

printf("result --> %i\n", result); // result --> 0

char str1 = "ab1";

char str2 = "abc";

int result = strcmp(str1, str2);

printf("result --> %i\n", result); // result --> -50

char str1 = "absadsa";

char str2 = "abc";

int result = strcmp(str1, str2);

printf("result --> %i\n", result); // result --> 16

如果想儲存一堆字串可以使用字串陣列,字串陣列就是二維陣列

char names[5][20] =

字串,字串陣列,字串指標!!

字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...

字串和字串陣列和 0

c語言中字串為什麼要有 0呢?0在字串中的作用是什麼 0 在字串中標誌著結尾 用來判斷這個字串已經結束 如果不新增 0 系統就在記憶體中一直向後讀,直到讀到 0 為止 這個情況就造成錯誤 乙個語句結束了,就用分號 表示結束 首先要區分,字元,字元陣列,字串的區別。字串預設的最後會有 0 char k...

字串和字元陣列

void test1 函式test1中,指標str1所指向的字串有11個元素。一定要注意字串是以 0 為結尾的,而strcpy拷貝了整個字串包括 0 所以存在下標越界的問題。void test2 函式test2中,字元陣列str1包含10個元素。陣列str1並不是以 0 結束,所以不能作為字串使用。...