1、将字符串转换为数字
strtol 根据进制转化为 long int型数字,比如要将字符串"1a"转化成16进制数字 0x1a
strtoul 根据进制转化为 unsigned long int 型数字。比如要将字符串"1a"转化成16进制数字 0x1a
atoi 将字符串转化为int型数字。比如要将字符串"123"转化成10进制数字123
/* strtoul */const char* str = "1a"; char* endptr = NULL; unsigned long int n; n = strtoul(str, &endptr, 16); printf("The number(unsigned long int) is: %lu\n", n); /* strtol */const char* str = "1a"; char* endptr = NULL; unsigned long int n; n = strtol(str, &endptr, 16); printf("The number(long int) is: %l\n", n); /* atoi */const char* str = "123"; unsigned long int n; n = atoi(str); printf("The number(int) is: %d\n", n);
2、在字符串中查找字符串/字符
char *strstr(const char *haystack, const char *needle)
函数功能:在字符串haystack中查找字符串needle,如果存在则返回第一次出现的字串的首地址,如果不存在返回NULL。
include <stdio.h>
#include <string.h>int main () {const char haystack[20] = "TutorialsPoint";const char needle[10] = "Point";char *ret;ret = strstr(haystack, needle);printf("The substring is: %s\n", ret);return(0);
}# result
The substring is: Point
参考:C library function - strstr()
char *strchr(const char *str, int c)
函数功能:在字符串str中查找字符c,如果存在则返回第一次出现的首地址,如果不存在返回NULL。
#include <stdio.h>
#include <string.h>int main () {const char str[] = "https://www.tutorialspoint.com";const char ch = '.';char *ret;ret = strchr(str, ch);printf("String after |%c| is - |%s|\n", ch, ret);return(0);
}# result
String after |.| is - |.tutorialspoint.com|
参考:C library function - strchr()
3、根据分隔符,将字符串分割成一组字串
比如这种字符串 "20 10 0f" "1a:2f:5c:26:34:56" ,如果分割后转化成数字,一般会搭配strtoul 使用。
char *strtok(char *str, const char *delim)
-
str − 要被分割的字符串,再次调用要把str设为NULL,If str is NULL, the saved pointer in SAVE_PTR is used as the next starting point.
-
delim − This is the C string containing the delimiters. These may vary from one call to another.
Breaks string str into a series of tokens using the delimiter delim. 返回第一个被找到的token的首地址。如果后面没有了,则返回NULL。
#include <string.h>
#include <stdio.h>int main () {char str[80] = "This is - www.tutorialspoint.com - website";const char s[2] = "-";char *token;/* get the first token */token = strtok(str, s);/* walk through other tokens */while( token != NULL ) {printf( " %s\n", token );token = strtok(NULL, s);}return(0);
}#resultThis is www.tutorialspoint.com website
参考:C library function - strtok()
4、字符串连接
char *strcat(char *dest, const char *src)
Appends the string pointed to by src to the end of the string pointed to by dest.
This function returns a pointer to the resulting string dest.
-
dest − This is pointer to the destination array, which should contain a C string, and should be large enough to contain the concatenated resulting string.
-
src − This is the string to be appended. This should not overlap the destination.
#include <stdio.h>
#include <string.h>int main () {char src[50], dest[50];strcpy(src, "This is source");strcpy(dest, "This is destination");strcat(dest, src);printf("Final destination string : |%s|", dest);return(0);
}
char *strncat(char *dest, const char *src, size_t n)将src前n个字节 append到dest
-
dest − This is pointer to the destination array, which should contain a C string, and should be large enough to contain the concatenated resulting string which includes the additional null-character.
-
src − This is the string to be appended.
-
n − This is the maximum number of characters to be appended.
#include <stdio.h>
#include <string.h>int main () {char src[50], dest[50];strcpy(src, "This is source");strcpy(dest, "This is destination");strncat(dest, src, 10);printf("Final destination string : |%s|", dest);return(0);
}#resultFinal destination string : |This is destinationThis is so|