strlen()
用于得到字符數組中第一個\0
前的字符的個數,格式如下:
strlen(數組);
例子:
#include <stdio.h>
#include <string.h>int main(){char str[10];gets(str);int len = strlen(str);printf("%d\n", len);return 0;
}
輸入:
ababab
輸出:
6
strcmp()
用于比較字符串大小,比較原則是按照字典序:
strcmp(字符數組1, 字符數組2)
如果數組1長則返回正數,數組2長則返回負數,相等返回0。
#include <stdio.h>
#include <string.h> int main(){char str1[50], str2[50];gets(str1);gets(str2);int cmp = strcmp(str1, str2);if(cmp < 0) printf("str1 < str2\n");else if (cmp > 0) printf("str1 > str2\n");else printf("str1 == str2\n");return 0;
}
上圖中前兩行是輸入,最后一行是輸出。
strcpy()
復制字符串給另一個字符串,用法:strcpy(str1, str2)
。這樣會把str2
內容復制到str1
。
示例:
#include <stdio.h>
#include <string.h> int main(){char str1[50], str2[50];gets(str1);gets(str2);strcpy(str1, str2);puts(str1);return 0;
}
strcat()
拼接兩個字符串,strcat(str1, str2)
,
#include <stdio.h>
#include <string.h>int main(){char str1[50], str2[50];gets(str1);gets(str2);strcat(str1, str2);puts(str1);return 0;
}
sscanf與sprintf
sscanf
與sprintf
是專門用于處理字符串的,可以理解為“string + scanf”和“string + printf”。
用法就類似于在內存上以scanf
和printf
的方式將數據進行傳遞。舉個例子,sscanf(str, "%d", &n);
,這就是將str中內容以%d
的格式寫入到n中(可以這樣理解,scanf(screen, "%d", &n);
相當于是從screen屏幕捕獲輸入并輸入到n中,從左到右,而sscanf
起到的作用就差不多這樣,從str按照"%d"
的格式輸入到n。sprintf
則反過來,從右往左)。
比較簡單,直接上示例:
#include <stdio.h>int main() {int n;char str[100] = "123";sscanf(str, "%d", &n);printf("%d\n", n);return 0;
}
#include <stdio.h>int main(){int n = 233;char str[100];sprintf(str, "%d", n);printf("%s\n", str);return 0;
}
復雜點的例子:
#include <stdio.h>int main(){int n;double db;char str[100] = "2048:3.14, hello", str2[100];sscanf(str, "%d:%lf, %s", &n, &db, str2);printf("n = %d, db = %.2f, str2 = %s\n", n, db, str2);return 0;
}
在字符串處理的時候相當有用。