C語言中字符型數(shù)組的實現(xiàn)示例
一、字符型數(shù)組的基本概念
用途:用來存儲字符串
1.C語言中定義字符數(shù)組
char str[常量];
- 在開辟內(nèi)存空間的時候,需要有足夠大的空間。
- "hello world",共11個有效字符,需要注意的是,最后是'\0'.
2.字符型數(shù)組的訪問
char str[15] = "hello world";
int i = 0;
str[0] == h; //char
str[i] == h; //char
str[i+1] == e; //char
str[10] == d;
str[11] = '\0';
printf("%c", a[0]);
a[0] =a;
- 下標的范圍 :0 ~ N-1
- 下標可以是常量、變量、表達式。
- 不能整體操作,只能單個字符操作。 系統(tǒng)中提供庫函數(shù),可以整體操作。
3.字符串的初始化
char str[50] = "hello";
char str2[10] = {'b','u','s',};
char str3[6] = {"hello"};
char str4[10] = {0};
char str5[] = {'h','e','l','l','o','\0'};// 如果不指定數(shù)組大小,使用單個字符初始化,一定要寫'\0'
char str6[] = "hello6";
char str7[] = {"hellor7"};注意:
- 字符串常量初始化的字符數(shù)組,其長度至少為 “字符串長度 + 1”(預(yù)留 '/0' 的位置)。
- 如果不指定數(shù)組大小,使用單個字符初始化,一定要寫 '\0'
4.字符串的輸出
//單個字符
putchar(str[0]); // 方式1
printf("%c\n",str[0]); // 方式2
//顯示整個字符串
int i = 0 ; // 方式1
for(i = 0; str[i] != '\0'; i++)
{
printf("%c\n",str[i]);
}
printf("str is %s\n",str); // 方式2
puts(str); // 方式35.字符串的輸入
char str[50] = {0}; // 方式1
printf("input name:");
scanf("%s", str); // 接收的字符串中不能有空格
char str2[50] = {0}; // 方式2
gets(str2); // 接收的字符串中可以有空格二、字符串相關(guān)函數(shù)
1.獲得字符串有效長度(strlen)
功能:計算字符串中有效字符的個數(shù)(不包含 '\0')。
原型:size_t strlen(const char *str)
int len = strlen(str); // 會返回str的有效長度
- strlen 的替代寫法:
int i = 0 ;
while(1)
{
if('\0' == str[i])
{
break;
}
i++;
len++;
}2.字符串的復(fù)制(strcpy)
功能:將源字符串 (src) 復(fù)制到目標字符數(shù)組 (dest),包括 '\0',目標字符串原來的內(nèi)容會被覆蓋。
原型:char *strcpy(char *dest, const char *src);
char dest[10] = "aaa"; char src[10] = "bbb"; strcpy(dest, src); // dest變?yōu)?bbb" str2 = str1; // 這個是錯誤的,不是復(fù)制內(nèi)容。
注意:目標數(shù)組 dest 必須有足夠空間,否則會導(dǎo)致緩沖區(qū)溢出(危險!)。
- strcpy 的替代寫法:
int i=0;
while(1)
{
if('\0' == str[i])
{
break;
}
str2[i] = str[i];
i++;
}3.字符串的拼接(strcat)
功能:將源字符串拼接到目標字符串的末尾(覆蓋 dest 原有的 '\0',并在新末尾加 '\0')。
原型:char *strcat(char *dest, const char *src);
char dest[20] = "hello"; char src[] = " world"; strcat(dest, src); // dest變?yōu)?hello world"
注意:dest 必須有足夠空間容納拼接后的結(jié)果。
- strcat 的替代寫法:
int i = 0, j = 0;
// 設(shè)置i的值為源字符串的末尾位置
while(1)
{
if('\0' == str[i])
{
break;
}
i++;
}
// 拼接字符串
while(1)
{
str[i] = str2[j];
if('\0' == str2[j])
{
break;
}
i++;
j++;
}4.字符串的比較(strcmp)
功能:按 ASCII 值逐個比較兩個字符串的字符,返回比較結(jié)果。
原型:int strcmp(const char *s1, const char *s2);
返回值:
- 0:內(nèi)容相同。
- > 0 或 < 0:內(nèi)容不相同。如果不相同,實際是不同的字符進行相減操作。
char str1[] = "apple";
char str2[] = "banana";
printf("%d\n", strcmp(str1, str2)); // 返回值<0('a' ASCII值 < 'b')
printf("%d\n", strcmp(str1, "apple")); // 返回值=0(相等)- strcmp 的替代寫法:
int i = 0;
int ret = 0;
while(1)
{
if(str1[i] == str2[i] && str1[i] != 0)
{
i++;
}
else
{
ret = str1[i] - str2[i];
break;
}
}
printf("ret %d\n", ret);到此這篇關(guān)于C語言中字符型數(shù)組的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)C語言 字符型數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
舉例剖析C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用
這篇文章主要介紹了C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用,講解了函數(shù)返回值是引用的情況等一些難點,需要的朋友可以參考下2016-03-03
C++實現(xiàn)LeetCode(45.跳躍游戲之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(45.跳躍游戲之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
詳解C++設(shè)計模式編程中對狀態(tài)模式的運用
這篇文章主要介紹了C++設(shè)計模式編程中對狀態(tài)模式的運用,狀態(tài)模式允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的類,需要的朋友可以參考下2016-03-03

