一、概念
/*
printf函數
弊端 : 如果想要換行, 必須加上\n
優點 : 可以自定義格式化 需要輸出的字符串,也就是 可以按照我們需要的格式輸出
puts函數
優點 : 可以自動換行
缺點 : 不可以自定義格式,只能原樣輸出
scanf函數
1.利用scanf接收字符串的注意點
scanf接收字符串, 會以空格, tab, 回車作為結束符號, 也就是說利用scanf接收字符串時,字符串中不能出現空格,tab,回車
gets函數
warning: this program uses gets(), which is unsafe.
如果是用gets接收字符串,系統會提示 我們正在使用一個不安全的方法接收字符
優點 : 如果利用gets接收字符串,可以在字符串輸入空格,tab
strlen函數
strlen的原理 : 從傳入的地址 開始 逐個取出字符串, 每取出一個 讓計算器+1, 知道遇到\0位置
計算字符串的個數(不包含\0)
自己寫一個strlen函數
// 自定義strlen函數
int myStrlen(char str[])
{
int count = 0;
while (str[count] != '\0') {
count++;
}
return count;
}
*/
二、代碼
#include <stdio.h>
#include <string.h>
int myStrlen(char str[]);
int myStrlen2(char str[],int length);
int main()
{
// 1.如何輸出字符串
// 1.1 可以使用printf的 %s占位符來輸出
// 弊端 : 如果想要換行, 必須加上\n
// 優點 : 可以自定義格式化 需要輸出的字符串,也就是 可以按照我們需要的格式輸出
char str[] = "lyh";
printf("name = %s!!!!\n",str);
printf("-----\n");
// 1.2 可以使用puts函數輸出
// 優點 : 可以自動換行
// 缺點 : 不可以自定義格式,只能原樣輸出
puts(str);
printf("-----\n");
// 2.如何輸入字符串
// 1.利用scanf接收字符串的注意點
// scanf接收字符串, 會以空格, tab, 回車作為結束符號, 也就是說利用scanf接收字符串時,字符串中不能出現空格,tab,回車
/*
printf("請輸入一個字符串\n");
char buf[10];
scanf("%s",buf);
printf("buf = %s\n",buf);
printf("-----\n");
*/
// 2.2 利用gets接收字符串
// warning: this program uses gets(), which is unsafe.
// 如果是用gets接收字符串,系統會提示 我們正在使用一個不安全的方法接收字符
// 優點 : 如果利用gets接收字符串,可以在字符串輸入空格,tab
/*
printf("請輸入一個字符串\n");
char buf[5]; // lyh cool
gets(buf);
printf("buf = %s\n",buf);
printf("-----\n");
*/
// 3.如何計算字符串的長度
/*
strlen的原理 : 從傳入的地址 開始 逐個取出字符串, 每取出一個 讓計算器+1, 知道遇到\0位置
*/
char content[] = "lyhss11";
// int length = sizeof(content) / sizeof(content[0]) -1;
// printf("length = %u\n",length);
// size_t size = strlen(content); // 計算出來的結果不包括\0
// int size = myStrlen(content);
// printf("size = %i\n",count);
int length = sizeof(content) / sizeof(content[0]);
int size = myStrlen2(content, length);
printf("size = %lu\n",size);
for (int i = 0; i < size; i++) {
printf("content[%i] = %c\n",i,content[i]);
}
return 0;
}
int myStrlen2(char str[],int length)
{
// 1.定義變量 記錄取出了多少個字符
int count = 0;
// 2.遍歷字符串數組
for (int i = 0 ; i < length; i++) {
if (str[i] !='\0') {
count++;
}
}
return count;
}
// 自定義strlen函數
int myStrlen(char str[])
{
// 1.定義變量 記錄取出了多少個字符
int count = 0;
// 2.遍歷字符串數組
while (str[count] != '\0') {
count++;
}
return count;
}