程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C中字符串知識學習小記

C中字符串知識學習小記

編輯:關於C語言

C中字符串知識學習小記


1:在C中我們說"H"這是一個字符串,總共占有2個字節,後面有一個'\0'偽零結束符。

'H'這是一個數字。通過下面程序進行驗證。

#include 

int main(void)
{
	printf("%d %d\n",sizeof("c"),sizeof('s'));
}

2:字符串創建過程

#include 

int main(void)
{
	char * p = "hello world!";
	printf("%s\n", p);
}

在這裡,為什麼一個字符串可以賦給一個 char * 類型的指針變量呢?
1:當我們寫hello時,就是告訴編譯器,在只讀數據段存儲6個字節。
2:"hello"表達式的值表示字符串的第一個字符的地址。

#include 

int main(void)
{
	char * p = "world";
//通過這一段代碼的打印可以看出字符串代表的是一個地址。
	printf("%s\n",p);
	printf("%c\n",*("hello"));
	return 0;
}

//越界的情況打印出來的數據增長了
#include 
void func(void)
{
	int * p ="hello!";
	write(1,p,10);
}

int main(void)
{
	int * q = "hello world";
	func();
	return 0;
}



3:字符串中傳遞參數:

#include 

int main(void)
{
	char * p = "hello word! %d\n";
	printf(p,5);
	return 0;
}
4:修改字符串的內容

#include 

int main(void)
{
	char * p = "hello word!\n";
	 p[0] = 'H';
	 //這樣編譯就會出現問題,因為只讀數據段的內容不能修改
	printf("%c\n",p[0]);
	//printf(p,5);
	return 0;
}

//那麼如果我們想要修改只讀字符串中的內容,我們需要把數據放到一個數組中,相當於復制了一份只讀數據段中的內容


例如這樣

#include 

int main(void)
{
	char * p = "hello word!\n";
	 p[0] = 'H';
	printf("%c\n",p[0]);
	return 0;
}

5:求一個字符串的有效字節長:

#include 
#include 

int main(void)
{
	char * p = "hello";
	// p[0] = 'H';
	//printf("%c\n",p[0]);
	//printf(p,5);
	char a[] = "hello";
	//strlen()這個函數是用來求一個字符串的有效字節長度,根據偽零結束時進行判斷
	printf("%ld\n",strlen(a));
	return 0;
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved