在軟件開發(fā)過程中,字符串的操作相當頻繁。在標準C語言庫中提供了很多字符串處理的函數(shù)罗捎。今天我們來介紹一些常用的字符串處理函數(shù)捉偏。
1. 字符串輸入輸出
1.1 printf() scanf()
之前我們學習過使用“%c”進行字符的輸入輸出讹躯。字符串的輸入輸出大體相同潮梯,唯一的區(qū)別是采用“%s”。
請看下面這段代碼:
int main()
{
char str[10];
printf("Please input 10 words:\n");
scanf("%s", str);
printf("%s", str);
return 0;
}
這段代碼實現(xiàn)的功能是從鍵盤輸入一行字串耙旦,再打印出來萝究。
注意:
- 字符串數(shù)組str用來接收從鍵盤輸入的字符串
- str的長度為10,因此不能輸入長度超過10的字符串
- 如果輸入字符串長度超過10绕娘,內(nèi)存中會越界栽连,這樣就有可能造成系統(tǒng)程序崩潰。但并不是每次都會出現(xiàn)舷暮,因此需要各位注意。
1.2 puts() gets()
- puts() 把一個字符串打印到屏幕上
- gets() 從鍵盤讀入一個字符串
這兩個函數(shù)的定義在string.h中复颈,使用時需要添加
#include<string.h>
puts()
格式
puts(字符數(shù)組)功能
向顯示器輸出字符串(輸出完沥割,自動換行机杜,即用)
gets()
格式
gets(字符數(shù)組)功能
從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中,并自動加"\0"說明
輸入串長度應小于字符數(shù)組維數(shù)椒拗,字符串中可以包含空格
例如:
#include<stdio.h>
#include<string.h>
void main()
{
char str[10];
int i;
printf("Please input a string:\n");
gets(str);
printf("The input string is:\n");
puts(str);
}
同樣需要注意數(shù)組長度的問題蚀苛。
2. 字符串轉(zhuǎn)換
字符串經(jīng)常會用到和其他類型進行轉(zhuǎn)換,那么就會用到下面這些函數(shù)腋舌。
2.1 itoa()
- 功能
把一整數(shù)轉(zhuǎn)換為字符串渗蟹。itoa是英文integer to array的縮寫
用法
char *itoa(int value, char* string, int radix);參數(shù)
value: 待轉(zhuǎn)化的整數(shù)。
radix: 是基數(shù)的意思,即先將value轉(zhuǎn)化為radix進制的數(shù)授艰,范圍介于2-36膘怕,比如10表示10進制岛心,16表示16進制篮灼。
* string: 保存轉(zhuǎn)換后得到的字符串。返回值
char * : 指向生成的字符串髓堪, 同*string。-
頭文件
"stdlib.h"
程序例:int main() { int number = 123; char string[25]; itoa(number, string, 10); printf("integer = %d string = %s\n", number, string); return 0; }
2.2 atoi()
功能
把字符串轉(zhuǎn)換成整型數(shù)驶沼。array to integer 的縮寫.函數(shù)說明
atoi()會掃描參數(shù)nptr字符串争群,如果第一個字符不是數(shù)字也不是正負號返回零,否則開始做類型轉(zhuǎn)換玉雾,之后檢測到非數(shù)字或結(jié)束符 \0 時停止轉(zhuǎn)換轻要,返回整型數(shù)。原型
int atoi(const char *nptr);-
頭文件
“stdlib.h”
程序例int main() { int n; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); return 0; }
執(zhí)行結(jié)果:
string = 12345.67 integer = 12345
2.3 sprintf()
功能
把格式化的數(shù)據(jù)寫入某個字符串原型
int sprintf( char *buffer, const char *format [, argument] … );返回值
字符串長度(strlen)
這是一個很有用的函數(shù)驹碍,用法類似printf,只不過它不是把結(jié)果打印在屏幕上柏蘑,而是保存在一個數(shù)組中咳焚。那么它能做什么呢?說兩個最常用的碑定。
int main()
{
char s[50];
char who[] = "I";
char whom[] = "Tianhuaban";
sprintf(s, "%s am %s.", who, whom);
printf("%s\n", s);
sprintf(s, "%10.3f", 3.1415626);
printf("%s\n", s);
return 0;
}
第一句sprintf把兩個字符數(shù)組拼接成了一個新數(shù)組又官,寫入s中。第二個sprintf把一個浮點數(shù)格式化后寫入到字符數(shù)組s中碘赖。
3. 字符串常用方法
3.1 strcpy
- 功能:拷貝一個字符串到另一個
- 用法:char *stpcpy(char* destin, char* source);
3.2 strcat
- 功能:字符串拼接函數(shù)
- 用法:char *strcat(char* destin, char* source);
3.3 strchr
- 功能:在一個串中查找給定字符的第一個匹配之處
- 用法:char *strchr(char* str, char c);
3.4 strcmp
- 功能:串比較
- 用法:int strcmp(char* str1, char* str2);
- 說明:
當s1<s2時普泡,返回值<0
當s1=s2時审编,返回值=0
當s1>s2時,返回值>0
即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較)砰嘁,直到出現(xiàn)不同的字符或遇'\0'為止。
3.5 strcpy
- 功能: 串拷貝
- 用法: char *strcpy(char* str1, char* str2);
3.6 strerror
- 功能:返回指向錯誤信息字符串的指針
- 用法:char *strerror(int errnum);
3.7 strset
- 功能:將一個串中的所有字符都設(shè)為指定字符
- 用法:char *strset(char* str, char c);
3.8 strstr
- 功能:在串中查找指定字符串的第一次出現(xiàn)
- 用法:char *strstr(char* str1, char* str2);
這八個都是非常經(jīng)典的函數(shù)斟冕,具體用法網(wǎng)上非常多板祝。這些不要求記住券时,只要知道有這些功能的函數(shù)即可,需要用的時候立刻能在網(wǎng)上找到答案橘洞。
我是天花板炸枣,讓我們一起在軟件開發(fā)中自我迭代。
如有任何問題适肠,歡迎與我聯(lián)系侯养。