#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 將字串 s2 整個複製至陣列 s1 (注意會改變s1)。 並回傳 s1 */
// 使用方法 char* array = strcpy( char *s1, const char *s2)
char text1[30] = "adbfdhgsjkjykyt";
char* text2 = "My name.";
printf("%s\n", text1); // 原text1
strcpy(text1, text2);
printf("%s", text1); // text2 覆製且覆蓋原有的 text1
return 0;
}
strncpy 字串複製(前n個字元)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 將字串 s2 "前 n 個字元複製至陣列 s1 (注意會改變s1)。 並回傳 s1 */
// char* array = strncpy( char *s1, const char *s2, size_t n)
char text1[30] = "adbfdhgsjkjykyt";
char* text2 = "My name.";
printf("%s\n", text1); // 原text1
int n = 5;
strncpy(text1, text2, n);
//text1[n] = '\0'; //注意在做複製的時候若長度不足以包含到"空白字元" 則要手動加入
printf("%s", text1); // text2 覆製且覆蓋原有的 text1
return 0;
}
strcat 字串拼接
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 將字串 s2 串接到字串 s1 的尾端,且 s2 的第一個字元會覆寫 s1 的空白(結束)字元,
並自動在尾端加上空白字元並回傳 */
// char* array = strcat( char *s1, const char *s2)
char text1[20] = "My name."; // 注意字元陣列的長度必須足夠
char text2[] = "is Evan.";
//char *text1 = "My name."; // 不可定義為指標變數的形式
//char *text2 = "is Evan."; // 不可定義為指標變數的形式
printf("%s\n", text1);
strcat(text1, text2);
printf("%s", text1);
return 0;
}
strncat 字串拼接(前n個字元)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 將字串 s2 前 n 個字元串接到字串 s1 的尾端,且 s2 的第一個字元會覆寫 s1 的空白(結束)字元,
並自動在尾端加上空白字元並回傳 */
// char* array = strncat( char *s1, const char *s2, size_t n)
char text1[20] = "My name.";
char text2[] = "is Evan.";
int n = 4;
printf("%s\n", text1);
strncat(text1, text2, n);
printf("%s", text1);
return 0;
}
strcmp 字串比較
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 比較字串 s1 與 字串 s2 ,若兩字串相等則回傳 0 。 若 s1 < s2 回傳負值; s1 > s2 回傳正值 */
// int Num = strcmp( const char *s1, const char *s2)
char *text1 = "ABCDE";
char *text2 = "ABCDE";
char *text3 = "ABCDD";
char *text4 = "ABCDF";
printf( "%d\n%d\n%d\n", strcmp(text1,text2),
strcmp(text1,text3),
strcmp(text1,text4) );
return 0;
}
strchr 字元搜尋(找字元在字串中第一次出現的位置)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 找出字元 c 在字串 s 中第一次出現的位置。如果有找到則回傳 c 在 s 中的 "指標位址";
否則回傳 NULL 的 "指標位址"*/
// char address = strchr( const char *s, int c)
char *text1 = "This is a test string";
char find1 = 'i';
char find2 = 'B';
char find3 = 'F';
char *p1; //定義一個指標陣列
char *p2; //定義一個指標陣列
char *p3; //定義一個指標陣列
p1 = strchr( text1, find1);
p2 = strchr( text1, find2);
p3 = strchr( text1, find3);
printf( "text1 的起始位置為 %p\n", &text1[0]);
printf( "字元 i 在 %p , 也就是第 %d 個字的地方 \n", p1, ( p1 - &text1[0] )+1 );
printf( "字元 B 在 %p\n", p2);
printf( "字元 F 在 %p", p3);
return 0;
}
strchr 字元搜尋更常見的應用
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 找出字元 c 在字串 s 中第一次出現的位置。如果有找到則回傳 c 在 s 中的 "指標位址";
否則回傳 NULL 的 "指標位址" */
// char address = strchr( const char *s, int c)
char *text1 = "This is a test string";
char find1 = 'i';
char find2 = 'B';
if ( strchr(text1, find1) != NULL ) printf("字元 %c 有在字串 %s 裡", find1, text1);
else printf("在字串 %s 裡找不到字元 %c", text1, find1);
printf("\n\n");
if ( strchr(text1, find2) != NULL ) printf("字元 %c 有在字串 %s 裡", find2, text1);
else printf("在字串 %s 裡找不到字元 %c", text1, find2);
return 0;
}
strrchr 字元搜尋(找字元在字串中最後一次出現的位置)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 找出字元 c 在字串 s 中最後一次出現的位置。如果有找到則回傳 c 在 s 中的 "指標位址";
否則回傳 NULL 的 "指標位址" */
// char address = strrchr( const char *s, int c)
char *text1 = "This is a test string";
char find1 = 's';
char *p1;
p1 = strrchr( text1, find1);
printf( "text1 的起始位置為 %p\n", &text1[0]);
printf( "最後一個字元 s 在 %p , 也就是第 %d 個字的地方 \n", p1, ( p1 - &text1[0] )+1 );
return 0;
}
strstr 字串搜尋(找字串在字串中第一次出現的位置)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 找出字串 s2 在字串 s1 中第一次出現的位置。如果有找到則回傳 s2 在 s1 中的 "指標位址";
否則回傳 NULL 的 "指標位址" */
// char address = strstr( const char *s1, const char *s2)
char *text1 = "This is a test string";
char *text2 = "test";
char *p1;
p1 = strstr( text1, text2);
printf( "text1 的起始位置為 %p\n", &text1[0]);
printf( "字串 text2 在 %p , 也就是第 %d 個字的地方 \n", p1, ( p1 - &text1[0] )+1 );
return 0;
}
strlen 回傳字串長度(不包含空白字元)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(void) {
/* 算出字串 S 的長度。回傳此長度(此長度不包含結尾的空白字元) */
// size_t strlen( const char *s )
// 這邊的 size_t 作用於兼容各作業平台。常見為 unsigned int(32位元架構下)
const char *text1 = "TEST1234";
printf("字串 text1 的長度為 %d", strlen(text1) );
printf("\nstrlen(text1) 回傳的變數長度為 %d", sizeof(strlen(text1)));
return 0;
}
size_t
size_t 在 C 裡面常見被定義為 unsigned int (或 unsigned long )