【2015/10/17】Linux 邏輯卷管理以及C學習日誌_Day7 編譯步驟,註釋,mystrcpy

D7:
    review: 如果想在開機時掛載文件需要在fstab上添加掛載設備!
    
    LVM:(邏輯卷管理)    
        PV(physical volume 物理卷:來源的設備空間)
        VG(volume group 由PE組成的空間)
        LV(logical volume真實使用的由VG分配的空間)

    創建LVM:
        1.fdisk n 出空間
        2.fdisk t 修改Hex code (輸入L顯示所有code) LVM 的code是8e
        3.partprobe 重載分區
        4.pvcreate </dev/.. (設備路徑)>
        5.pvdisplay : 顯示pv的信息        
        6.vgcreate -s <16M : PE大小>  <vg0 : 卷組名> <設備名 : /dev/..>
        7.vgdisplay
        8.lvcreate -L <大小 : 1G> -n <lv0 : 設備名> <vg0 : 分配的卷組名>
        9.lvdisplay    
        10.mkfs.xfs </dev/vg0/lv0 : 設備名>
    
    可執行的操作 lvextemd -L <擴展後的空間 : 2G> <設備名 : /dev/vg0/lv0>
    要進行刷新才識別到新的 xfs_growfs <設備名>

        
C語言開始:
    file <文件> : 查看文件類型
    echo $? 顯示上一次操作的返回值
        
    vim 編輯器
    gcc 編譯器

    編譯步驟:    

        總和步驟: gcc hello.c -o hello

        1.預處理    gcc -E <源碼文件 *.c> -o <*.i> 對頭文件的全部展開(包括各種拓撲關係) 同時進行宏定義以及擦除註釋
        2.編譯    gcc -S <預處理文件 *.i> -o <*.s> 彙編代碼  
        3.彙編    gcc -c <彙編代碼文件 *.s> -o <*.o> 二進制代碼可以與別的二進制代碼進行重定向 (file中信息有 relocatable : 可重定向的)
        4.鏈接    gcc <彙編二進制代碼 *.o> -o <可執行文件名>
        
    linux下ELF是指二進制文件


    函數類型:
        1.可變參函數
        2.遞歸函數
        3.泛型編程

推薦書籍:《C語言接口與實現》

上課內容:

/*************************************************************************
    > File Name: class.c
    > Author: khalil
    > Mail: [email protected] 
    > Created Time: Sat 17 Oct 2015 02:36:53 PM CST
 ************************************************************************/

#if 1

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

char *  my_strcpy(char *dest_str,const char * src_str);
char *	my_strncpy(char *dest_str,const char * src_str,size_t n);

int main(int argc , char ** argv)
{
	char *str = "hello,world!~~~~~";
	char str2[100] = {0};
	char str3[100] = {0};
	char str4[100] = {0};
	//把字符串str的內容拷貝到str2
//	strcpy(str2,str);
//	my_strcpy(str2,str);
	my_strncpy(str3,str,50);
//	printf("%s\n",str2);
//	printf("%s\n",str3);
	printf("%d\n",strlen(str3));
//	my_strncpy(str4,str,3);
//	printf("%s\n",str4);
	return 0;
}

char *  my_strcpy(char *dest_str,const char * src_str)
{
	//1.檢測傳入參數
	//2.實現拷貝
	//3.返回dest地址
	//
	//不建議對傳入的指針參數直接進行使用
	
	char		* dest = dest_str; 
	const char	* src  = src_str;
	
	if (dest_str == NULL || src_str == NULL || dest_str == src_str)
	{
		return dest_str;
	}
	
	while((*dest++ = *src++) != '\0'){

	}

	return dest_str;
}

char *	my_strncpy(char *dest_str,const char * src_str,size_t n)
{
	char * dest			 = dest_str;
	const char * src	 = src_str;
	size_t i = 0;

	if (dest_str == NULL || src_str == NULL || dest_str == src_str)
	{
		return dest_str;
	}

	for ( ; (i < n)&&(*src) ; i++)
	{
		*dest++ = *src++;
	}

	for( ; i < n ;)
	{
		*dest++ = '\0';
	}

	return dest_str;

}


#endif 



#if 0

int main (int argc , char ** argv)
{
	int i = 0 ;				//操作符兩邊用空格隔開
	int a = 10 , b = 20 ;	//不建議,每行只對一個變量賦值
		//要注意縮進
	return 0 ;
}


#endif 



#if 0
//註釋的三種方式:
//	1.單行註釋 //
//	2. 塊註釋  /**/
//	3.條件註釋
//		#if (1|0)
//		#endif
//
//	關鍵字(系統可以識別的,系統自帶的)和標識符(用戶創建的名字)
//		Tip: C語言中有32個關鍵字!
//
//	1.標識符由數字字母下劃線組成,必須以字母下劃線開始
//	2.常見的命名規範:
//		(1):	int ListNode;	//Win ver
//				int List_node;	//Linux ver  -推薦使用!
//		(2):	要求:見名識義
//	    (3):	用最少的字母表示出最大的含義!	
//
#endif



#if 0
//*.c	實現功能的文件 
//		在/usr/lib中存在它的編譯後代碼 
//		*.o是靜態庫 *.so是動態庫 
//		一般情況下 使用者只能獲得.c編譯後的文件
//
//*.h	功能說明文件
//
//linux內核
//
//1.編程規範
//
//字符串要注意特殊字符,以及他們strlen中的長度
//要注意/的轉義作用
//

#include<stdio.h>
#include<string.h>
	//可以通過 man <函數名> 來查看它的頭文件
int main(int argc , char ** argv)
{
	char string[] = {"hello,world!"};
	printf("%d",strlen(string));
	printf(string);
	return 0;
}
#endif

#if 0
#include<stdio.h>

//提高程序的局部性

int main(int argc , char **argv)
{
	int array[] = {12,123,213,213,21,3,213,21,312,3};
	int arr_len = sizeof(array) / sizeof (array[0]);
		//不要在循環語句中進行計算 會降低程序的效率
	int i = 0;

	for (i = 0 ; i < arr_len ; ++i){
		printf("%d\n",array[i]);
	}
	return 0 ;
}

#endif 

#if 0
#include<stdio.h>

int main(int argc , char ** argv){
	int flag ;

	scanf("%d" , & flag);
	
	if (flag == 0){
		printf("---Hello , World!---\n");
		return 0;
	}else{
		printf("---Nope! You're wrong!---\n");
		return 1;
	}
}
#endif


發佈了28 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章