C 語言字符串與輸入輸出函數

字符串

字符串是一系列被視爲一個處理單元的字符,在 C 語言中,字符串是以空字符位結尾的一系列字符,它存儲在字符數組中。

C 預處理器

C 預處理器爲預處理指令(以 # 符號開始)查找源代碼程序,在開始編譯程序之前處理它們,如 #include 指令、#define 指令。

printf() 和 scanf()

輸入輸出函數能讓用戶與程序交流,它們是輸入輸出函數,或簡稱 I/O 函數。

getchar() 與 scanf()

getchar 讀取每個字符,包括空格、製表符和換行符;而 scanf 在讀取數字時則會跳過空格、製表符和換行符。

代碼示例

輸出函數練習

#include<stdio.h>
#include<string.h>
//define 通過預處理器定義常量,編譯時進行替換
#define PRAISE "You are an extraodinary being"   //編譯器會在末尾加上空字符 \0
#define PAGES 959
#define BLURB "Authentic imitation"
#define PAGES 336
#define WORDS 65618
int main(void) {
	char name[40];                       //C 語言的字符串存儲在字符數組中
	int a = 0;
	const double RENT = 3852.99;         //const 限定一個變量只讀
	short num = PAGES;
	short mnum = -PAGES;
	float n = 3.0;
	double n1 = 3.0;
	long n2 = 2000000000;
	long n3 = 1234567890;

	printf("What is your name ?");
	scanf_s("%s",name,sizeof(name));     //輸入時自動把空字符 \0 放入字符串末尾並只讀一個單詞
    printf("Hello,%s.%s\n", name, PRAISE);
	//strlen() 空字符不計入,sizeof() 空字符也會計算在內
	printf("strlen() = %zd,sizeof = %zd\n", strlen(name), sizeof(name));
	//printf 函數格式:printf(格式字符串,待打印項1,待打印項2,...);       
	//格式字符串包含每個待打印項對應的轉換說明,用雙引號括起來,
	//字段寬度打印整型時效果
	printf("*%d*\n", PAGES);
	printf("*%2d*\n", PAGES);            //字段寬度自動擴大以符合整數長度
	printf("*%10d*\n", PAGES);           //10個空格寬度
	printf("*%-10d*\n", PAGES);          //數字位於字段左側
	//浮點型修飾符的組合
	printf("\n");
	printf("*%f*\n", RENT);              //寬度和爲數爲系統默認設置,6位
	printf("*%e*\n", RENT);              //科學記數法
	printf("*%4.2f*\n", RENT);           //最小寬度 4,保留 2 位小數
	printf("*%3.1f*\n", RENT);           //四捨五入,最小寬度 3,保留 1 位小數
	printf("*%10.3f*\n", RENT);          //最小寬度 10,保留 3 位小數
	printf("*%10.3E*\n", RENT);          //科學記數法
	printf("*%+4.2f*\n", RENT);          //代數符號 +
	printf("*%010.2f*\n", RENT);         //第一個 0 是標記,小數點之前指定字段寬度
	//格式標記
	printf("\n");
	printf("%x  %X  %#x\n", 31, 31, 31); //十六進制數,帶符號十六進制數
	printf("%5.3d,%5.3f\n", 6, 6.0);     //整數保留三位,小數點後保留三位
	printf("%05d,%05.3d\n", 6, 6);       //0 標記用 0填充字段寬度,0與精度出現會被忽略
	//字符串格式
	printf("[%2s]\n",BLURB);             //字段被擴大容納字符串中所有字符
	printf("[%24s]\n", BLURB);           //24 寬度
	printf("[%24.5s]\n", BLURB);         //只打印 5 個字符
	printf("[%-24.5s]\n", BLURB);        //左對齊打印五個字符
	//轉換格式打印
	printf("-num %hd,unsigned short %hu\n", mnum, mnum);  //無符號打印 65536 - 336
	printf("num as char:%c\n", num);      //取後 1 個字節,除以 256 餘 80 是字符 P
	printf("%ld  %ld  %ld \n", n,n1,n2);   //n,n1,n2 順序存放棧內,根據轉換類型取字節
	return 0;
}

在這裏插入圖片描述
輸入函數練習

#include<stdio.h>
int main(void) {

	//scanf() 讀取基本變量類型前加 &
	//        字符串讀入字符數組中不加 &
	int age;
	float assets;
	char pet[30];
	double number = 256.6;
	int width;
	printf("Enter your age,assets,and favorite pet.\n");
	scanf_s("%d %f", &age, &assets);
	scanf_s("%s", pet,20);
	printf("%d $%.2f %s\n", age, assets, pet);
	//printf() 函數中用 * 修飾符代替字段寬度
	scanf_s("%d", &width);
	printf("number = %*.*f\n", width, width, number);
	//scanf() 函數中 * 修飾符是跳過相應的輸出項
	scanf_s("%*d%*d%d", &width);
	printf("The last integer was %d\n", width);
	return 0;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章