学习C – C字符串函数
检查字符串数据长度
您可以使用string.h头中的strlen()函数来获取字符串数据的长度。
#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));
}
上面的代码生成以下结果。
索引字符
你可以通过位置索引得到一个字符。string_var [index]语法提供了这个功能。
注意0是第一个索引。
#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]);
}
}
上面的代码生成以下结果。
连接字符串
我们可以将字符串连接成一个字符串。
我们可以从string.h头中使用strcat()函数。
#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);
}
上面的代码生成以下结果。
字符串转换为数字
字符串类型转换为数字,您可以使用sscanf()函数将String转换为数字。
#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);
}
上面的代码生成以下结果。
数字转换为字符串
要将数字转换为字符串类型,请使用sprintf()函数。
您可以自动获取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);
}
上面的代码生成以下结果。
字符串解析器令牌
解析String的简单解决方案使用具有delimiter参数的strtok()函数。
例如,你有String数据;分隔符,并希望解析它。
#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);
}
}
上面的代码生成以下结果。
复制字符串数据
您可以从String数据中复制一些字符。
使用strcpy()和strncpy()函数。
#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);
}
上面的代码生成以下结果。
将字符串转换为数字
C标准库stdlib.h提供了一些函数,用于将字符串转换为数字。
atof – 将字符串转换为浮点数。
atoi – 将字符串转换为整数。
这两个函数都在下一个程序中演示。
#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
上面的代码生成以下结果。
strcmp()
strcmp()函数比较两个字符串的相等性。
#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()函数使用两个字符串作为参数,并使用相应的字符代码进行比较。
比较两个字符串后,strcmp()函数返回一个单一的数值,它指示第一个字符串是否等于,小于或大于第二个字符串。
下表更详细地描述了strcmp()函数的返回值。
示例函数 | 返回值 | 描述 |
---|---|---|
strcmp(string1,string2) | 0 | string1等于string2 |
strcmp(string1,string2) | <0 | string1小于string2 |
strcmp(string1,string2) | >0 | string1大于string2 |
上面的代码生成以下结果。