先來學習字符數(shù)組
定義
char 數(shù)組名[元素個數(shù)]
例子
char ch[5];
在內(nèi)存中的表現(xiàn)形式
可以看出定義了但是里面的值是不確定的
現(xiàn)在進行初始化
char ch[5]={'h','e','l','l','o'};
此時內(nèi)存顯示為
如果我們定義了一個數(shù)組為char [7],但是不完全初初始化,則后面補\0
char sh[7]=['h','e','l','l','o']
此時在內(nèi)存中表現(xiàn)為
接下來看字符數(shù)組的輸入和輸出
輸入
char ch[10] = "hello";
int i;
for (i = 0; i< 10; i++)
{
sncaf("%s", &ch[i]); //也可以使用ch[i]=getchar();
}
輸出
char ch[10];
int i;
for (i = 0; i< 10; i++)
{
printf("%c", ch[i]);
}
舉個例子練習:輸入一串字符全部全換為大寫
#includeint main()
{
char ch[20]; //存放字符
int i;
for (i = 0; i< 20; i++) //循環(huán)輸入 字符
{
ch[i] = getchar();
if (ch[i] >= 'a' && ch[i]<= 'z') //每次輸入一個字符就進行判斷
{
ch[i] = ch[i] - 32; //如果輸入的字符不是小寫字符,則改變?yōu)樾懽址? }
}
for (i = 0; i< 20; i++)
{
printf("%c", ch[i]);
}
return 0;
}
第二部分:字符串
1.字符串的概念個初始化
定義一個字符串
char ch[7]="hello";
等價于
char ch[7]=['h','e','l','l','o','\0','\0']
字符串在內(nèi)存中的存儲和字符數(shù)組一樣就是結(jié)尾會有結(jié)束標志\0,也可以用看出結(jié)束標志在內(nèi)存中是占據(jù)空間的
char ch1[5] = { 'h','e','l','l','o' }; //占據(jù)5個字節(jié)
char ch2[] = "hello"; //占據(jù)6個字節(jié)
輸入輸出可以用
gets(ch);
scanf("%s", ch);
printf("%s", ch);
puts(ch)
三個函數(shù),這里不再贅述
現(xiàn)在來看字符串的相關(guān)函數(shù)
首先這些函數(shù)包含在string.h頭文件中
1.strcat():將兩個字符串連接起來
調(diào)用格式
strcat(字符數(shù)組,字符串);
例子
char ch1[10] = "hello";
char ch2[10] = "world";
strcat(ch1, ch2);
printf("%s", ch2); //helloworld
使用這個函數(shù)時,后面一個字符數(shù)組的首元素會覆蓋前一個的結(jié)束標識符,前一個字符數(shù)組要足夠大,不然會出現(xiàn)越界問題報錯,所以前一個字符必須先定義初始化后再使用,后面一個可以是一個字符數(shù)組,也可以是一個字符串常量
不用scrcat()函數(shù)實現(xiàn)兩個字符粗的連接
char str1[20] = "hello";
char str2[20] = " world";
int i, j,k;
for (i = 0; str1[i] != '\0'; i++);
for (j = 0; str2[j] != '\0'; j++);
for (k = 0; k< j; k++)
{
str1[i + k] = str2[k];
}
str1[i + k] = 0;
printf("%s", str1);
2.strncat()再字符串后面追加指定的字符個數(shù)
strncat(字符數(shù)組,字符串,n);
例如
char str1[10] = "hello";
char str2[10] = "world";
strncat(str1, str2, 2); //輸出為hellowo
如果n大于后面以一個字符的長度,則輸入完后面一個字符數(shù)組的所有字符后補0
不用strncat()函數(shù)實現(xiàn)該功能
char ch1[10] = "hello";
char ch2[10] = "world";
int i, j, k, n;
scanf("%d", &n); //追加的字符個數(shù)
//判斷兩個字符數(shù)組的長度
for (i = 0; ch1[i] != '\0'; i++);
for (j = 0; ch2[j] != '\0'; j++);
//將ch2[]數(shù)組中前n個字符追加到ch1中
for (k = 0; k< n; k++)
{
ch1[i + k] = ch2[k];
}
//添加結(jié)束標識符
if (n >= j)
{
ch1[i + j] = 0;
}
else
{
ch1[i + k] = 0;
}
3.strcpy()函數(shù)
將字符粗復制到另一個字符數(shù)組中字符數(shù)組中原有的內(nèi)容會被覆蓋
strcpy(字符數(shù)組,字符串)
用別的方式實現(xiàn)的代碼為
char str1[20] = "hello";
char str2[20] = "world";
int i, j, k;
for (i = 0; str2[i] != '\0'; i++)
{
str1[i] = str2[i];
}
str[i] = 0;
4.strncpy()函數(shù):將字符串前n個字符復制到字符數(shù)組中
strncpy(字符數(shù)組,字符串,n)
char str1[20] = "hello";
char str2[20] = "world";
strncpy(str1, str2, 2);
str1[3] = 0;
使用別的方式實現(xiàn)代碼
char str1[20] = "hello";
char str2[20] = "world";
int n, i;
scanf("%d", &n);
for (i = 0; i< n; i++)
{
str1[i] = str2[i];
}
str1[i] = 0;
5.strcmp()函數(shù):實現(xiàn)對兩個字符串進行比較,a>b返回正,小于返回負數(shù),等于返回0
strcmp(字符串1,字符串2)
實現(xiàn)原理
char str1[20] = "hello";
char str2[20] = "world";
int n, i;
gets(str1); gets(str2);
while (str1[i] != 0 || str2[i] != 0)
{
if (str1[i] == str2[i])
continue;
else
{
if (str1[i] >str2[i])
printf("1");
break;
else
{
printf("-1");
break;
}
}
i++;
}
6.strlen():求字符串實際長度包含\0
strlen(字符串)
7.strlwer():將字符串中的大小字符轉(zhuǎn)換為小寫字母
strlwer(字符串)
8.struper():將字符串中的小寫字母轉(zhuǎn)換為大寫字母
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當前標題:c語言字符數(shù)組和字符串函數(shù)你學會了沒?-創(chuàng)新互聯(lián)
本文地址:http://chinadenli.net/article14/deccge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、自適應網(wǎng)站、手機網(wǎng)站建設、電子商務、建站公司、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容