您可以使用string.h頭中的strlen()函數(shù)來獲取字符串?dāng)?shù)據(jù)的長(zhǎng)度。
#include <stdio.h>
#include <string.h>
void string_length();
int main(int argc, const char* argv[]) {
string_length();
return 0;
}
void string_length(){
char str[20] = "Hello world";
printf("str: %s\n",str);
printf("length: %d\n",(int)strlen(str));
}
上面的代碼生成以下結(jié)果。
你可以通過位置索引得到一個(gè)字符。string_var [index]語(yǔ)法提供了這個(gè)功能。
注意0是第一個(gè)索引。
#include <stdio.h>
#include <string.h>
void string_explore();
int main(int argc, const char* argv[]) {
string_explore();
return 0;
}
void string_explore(){
char str[15] = "Hello world";
int index;
for(index=0; index<strlen(str); index++){
printf("%c\n",str[index]);
}
}
上面的代碼生成以下結(jié)果。
我們可以將字符串連接成一個(gè)字符串。
我們可以從string.h頭中使用strcat()函數(shù)。
#include <stdio.h>
#include <string.h>
void concatenating();
int main(int argc, const char* argv[]) {
concatenating();
return 0;
}
void concatenating(){
printf("====concatenating===\n");
char str1[30] = "hello";
char str2[10] = "wolrd";
strcat(str1,str2);
printf("result: %s\n",str1);
}
上面的代碼生成以下結(jié)果。
字符串類型轉(zhuǎn)換為數(shù)字,您可以使用sscanf()函數(shù)將String轉(zhuǎn)換為數(shù)字。
#include <stdio.h>
#include <string.h>
void string_to_numeric();
int main(int argc, const char* argv[]) {
string_to_numeric();
return 0;
}
void string_to_numeric(){
printf("====string_to_numeric===\n");
char str1[10] = "10";
char str2[10] = "28.74";
int num1;
float num2;
sscanf(str1,"%d",&num1);
sscanf(str2,"%f",&num2);
printf("num1: %d\n",num1);
printf("num2: %f\n",num2);
}
上面的代碼生成以下結(jié)果。
要將數(shù)字轉(zhuǎn)換為字符串類型,請(qǐng)使用sprintf()函數(shù)。
您可以自動(dòng)獲取String類型。
#include <stdio.h>
#include <string.h>
void numeric_to_string();
int main(int argc, const char* argv[]) {
numeric_to_string();
return 0;
}
void numeric_to_string(){
int n = 10;
float m = 23.78;
char num1[10];
char num2[10];
sprintf(num1,"%d",n);
sprintf(num2,"% .2f",m);
printf("num1: %s\n",num1);
printf("num2: %s\n",num2);
}
上面的代碼生成以下結(jié)果。
解析String的簡(jiǎn)單解決方案使用具有delimiter參數(shù)的strtok()函數(shù)。
例如,你有String數(shù)據(jù);分隔符,并希望解析它。
#include <stdio.h>
#include <string.h>
void string_parser();
int main(int argc, const char* argv[]) {
string_parser();
return 0;
}
void string_parser(){
char cities[40] = "Tokyo;Berlin;London;New York";
char token[2]=";";
char* city;
printf("cities: %s\n",cities);
city = strtok(cities, token);
while(city != NULL){
printf("%s\n", city );
city = strtok(NULL, token);
}
}
上面的代碼生成以下結(jié)果。
您可以從String數(shù)據(jù)中復(fù)制一些字符。
使用strcpy()和strncpy()函數(shù)。
#include <stdio.h>
#include <string.h>
void string_copy();
int main(int argc, const char* argv[]) {
string_copy();
return 0;
}
void string_copy(){
char str[15] = "Hello world";
char new_str[20];
strcpy(new_str,str);
printf("str: %s\n",str);
printf("new_str: %s\n",new_str);
memset(new_str, "\0", sizeof(new_str));
strncpy(new_str,str,5);
printf("strncpy-new_str: %s\n",new_str);
}
上面的代碼生成以下結(jié)果。
C標(biāo)準(zhǔn)庫(kù)stdlib.h提供了一些函數(shù),用于將字符串轉(zhuǎn)換為數(shù)字。
atof - 將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。
atoi - 將字符串轉(zhuǎn)換為整數(shù)。
這兩個(gè)函數(shù)都在下一個(gè)程序中演示。
#include <stdio.h>
#include <stdlib.h>
main()
{
char *str1 = "123.79";
char *str2 = "55";
float x;
int y;
printf("\nString 1 is \"%s\"\n", str1);
printf("String 2 is \"%s\"\n", str2);
x = atof(str1);
y = atoi(str2);
printf("\nString 1 converted to a float is %.2f\n", x);
printf("String 2 converted to an integer is %d\n", y);
} //end main
上面的代碼生成以下結(jié)果。
strcmp()函數(shù)比較兩個(gè)字符串的相等性。
#include <stdio.h>
#include <string.h>
main()
{
char *str1 = "A";
char *str2 = "A";
char *str3 = "!";
printf("\nstr1 = %s\n", str1);
printf("\nstr2 = %s\n", str2);
printf("\nstr3 = %s\n", str3);
printf("\nstrcmp(str1, str2) = %d\n", strcmp(str1, str2));
printf("\nstrcmp(str1, str3) = %d\n", strcmp(str1, str3));
printf("\nstrcmp(str3, str1) = %d\n", strcmp(str3, str1));
if ( strcmp(str1, str2) == 0 )
printf("\nLetter A is equal to letter A\n");
if ( strcmp(str1, str3) > 0 )
printf("Letter A is greater than character !\n");
if ( strcmp(str3, str1) < 0 )
printf("Character ! is less than letter A\n");
} // end main
strcmp()函數(shù)使用兩個(gè)字符串作為參數(shù),并使用相應(yīng)的字符代碼進(jìn)行比較。
比較兩個(gè)字符串后,strcmp()函數(shù)返回一個(gè)單一的數(shù)值,它指示第一個(gè)字符串是否等于,小于或大于第二個(gè)字符串。
下表更詳細(xì)地描述了strcmp()函數(shù)的返回值。
示例函數(shù) | 返回值 | 描述 |
---|---|---|
strcmp(string1,string2) | 0 | string1等于string2 |
strcmp(string1,string2) | <0 | string1小于string2 |
strcmp(string1,string2) | >0 | string1大于string2 |
上面的代碼生成以下結(jié)果。
更多建議: