C05 C語言字符串和數組

目錄

  • 數組
  • 字符串

  

數組

概念

  • 數組是有序數據的集合。
  • 數組中的每個元素屬於同一個數據類型。
  • 經過數組名和下標惟一肯定數組中的元素。

 

一維數組的定義

語法格式數組

  數據類型   數組名[常量表達式]函數

  例如:int  arr[10]spa

  表示定義了一個整型數組,數組名爲a,數組中有10個元素。設計

  數組的下標從0開始。3d

數組元素的引用code

C語言規定只能逐個引用數組元素二不能一次引用整個數組。orm

數組元素的的表示形式爲: 數組名[下標]blog

示例:ci

 

輸出結果:字符串

 

 

數組初始化

1.在定義數組時初始化

 

2.初始化部分元素值

輸出

 

3.初始化所有元素值

初始化所有元素時候,能夠不指定數組長度

 

4.全部元素初始化爲0

 

輸出

 

注意:只能限於初始化元素爲0值。不然的話只是對第一個元素初始化。

 

示例

使用數組解決Fibonacci數列。

Fibonacci數列定義:數列由 0 和 1 開始,以後的係數由以前的兩數相加。首幾個斐波那契係數是:

0,1,1,2,3,5,8,13,21

 

輸出結果:

 

 

 

二維數組的定義

語法格式

  數組名[下標][下標]

二維數組的引用

  同一維數組,經過數組名和下標肯定惟一的二維數組元素。

二維數組的初始化

1.分行初始化

 

輸出:

 

2.所有初始化

 

3.部分元素初始化

 

輸出:

 

4.初始化所有數據時候能夠不指定第一維長度

 

示例

將一個二維數組行和列的元素互換,保持到另外一個二維數組中。

 

源碼:

 

 

 

字符串

定義

C語言中沒有定義字符串類型的數據,因此字符串是做爲字符數組來處理的。字符數組的定義和使用同其餘基本數據類型數組。

注意:字符數組中,C語言使用’\0’來結束一個字符串。若是一個數組包含1個以上的’\0’,則遇到第一個’\0’的時候輸出結束。

使用字符串初始化字符數組

 

輸出:

 

或者:

 

 

使用scanf函數接收信息初始化字符數組

 

注意,sacnf中,數組做爲地址參數不須要添加」&」。

 

字符串處理函數

注意,字符串處理函數須要包含string.h文件。

例如:

#include <stdio.h>
#include <string.h>

  

puts()和gets()

語法格式:

puts(字符數組) :向終端輸出字符串

gets(字符數組) :從中斷獲取字符串

示例:

 

 

strcat()

語法格式:

       strcat(字符數組1,字符數組2)

做用:

       把字符數組2鏈接到字符數組1後面,結果放在字符數組1中。

示例:

 

輸出:

 

 

strcpy()和strncpy()

語法格式:

       Strcpy(字符數組1,字符串2)

做用:

將字符串2複製到字符數組1中。

示例:

 

輸出:

 

注意:

1.字符數組1必須寫出數組名形式;字符串2能夠是字符數組名,也能夠是一個字符串常量。

2.C語言中,不能使用賦值語句將一個字符串常量或者字符數組直接賦值給一個字符數組,例如如下是錯誤的:

 

 

3.strncpy(字符數組1,字符串2,複製長度)能夠指定字符串2中的前n個字符複製到字符數組1中。

 

strcmp()

語法格式

       strcmp(字符串1,字符串2)

做用

       比較字符串1和字符串2

比較規則:

       兩個字符串從左向右逐個字符比較(按照ASCII碼值比較),直到出現’\0’爲止。若是所有字符相同,則兩個字符串相等;若出現不一樣的字符,則以第一個不相同的字符的比較結果爲準。

示例:

 

 

 

strlen()

語法格式

       strlen(字符數組)

做用

       測量字符數組的長度,不包括’\0’。

 

strlwr()和strupr()

語法格式

  strlwr(字符串)和strupr(字符串)

做用

       把字符串轉換成小寫(或者大寫)。

 

strcspn()

語法格式

  strcspn(字符串1,字符串2)

做用

       查找字符串2在字符串1中的位置

示例

 

 

 數據類型轉換

頭文件:#include <stdio.h>

sprintf()函數用於將格式化的數據寫入字符串,其原型爲:

int sprintf(char *str, char * format [, argument, ...]);

  

示例代碼:

sprintf(s, "%d", 123);  //把整數123打印成一個字符串保存在s中
  sprintf(s, "%8x", 4567);  //小寫16進制,寬度佔8個位置,右對齊

 

 

上機練習

  • 需求描述:設計一個字符二維數組,用來存儲學生信息,學生信息包括:學號,姓名、性別(男或者女)、年齡、電話、地址。
  • 提示:二維數組定義 students[10][300],從控制檯接收學生信息保持到二維數組,從數組讀取學生信息,顯示到控制檯。
  • 提示代碼:

 

#include <stdio.h>
#include <string.h>

int main()
{
	int i;//循環變量
	char i_temp[30];//整數轉換字符數組臨時變量
	char stu_temp[300];//學生信息臨時數組
	char list[10][300];//學生信息數組
	char tag[]="$";
	//初始化兩個學生
	strcpy(list[0],"1001$張三$男$23$13122224444$廈門");
	strcpy(list[1],"1002$李四$女$21$13322224444$福州");

	//從控制檯輸入學生信息
	int id;
	char name[50];
	char gender[3];
	int age;
	char tel[14];
	char address[50];


	printf("請輸入學號:");
	scanf("%d",&id);
	sprintf(i_temp,"%d",id);//學號轉成字符數組
	strcpy(stu_temp,i_temp);
	strcat(stu_temp,tag);

	printf("請輸入姓名:");
	scanf("%s",name);
	strcat(stu_temp,name);
	strcat(stu_temp,tag);

	printf("請輸入性別:");
	scanf("%s",gender);
	strcat(stu_temp,gender);
	strcat(stu_temp,tag);

	printf("請輸入年齡:");
	scanf("%d",&age);
	sprintf(i_temp,"%d",age);//年齡轉成字符數組
	strcat(stu_temp,i_temp);
	strcat(stu_temp,tag);

	printf("請輸入電話:");
	scanf("%s",tel);
	strcat(stu_temp,tel);
	strcat(stu_temp,tag);

	printf("請輸入地址:");
	scanf("%s",address);
	strcat(stu_temp,address);
	strcat(stu_temp,tag);

	strcpy(list[2],stu_temp);

	//輸出學生信息
	char temp[300];//臨時變量
	for(i=0;i<3;i++){
		strcpy(temp,list[i]);
		int length=strlen(temp);
		for(int j=0;j<length;j++){
			if(temp[j]=='$'){
				temp[j]='\t';//使用製表符'\t'替換'$'
			}
		}
		printf("%s\n",temp);
	}

	return 0;
}
相關文章
相關標籤/搜索