C语言 字符串处理相关函数大汇总之(11~15)
11,strtok函数,用于将字符串按照指定的分隔符进行分割。
strtok
?函数在首次调用时需要传入待分割的字符串和分隔符,之后的连续调用只需要传入?NULL
?作为第一个参数即可继续上一次的分割。函数原型如下:
char *strtok(char *str, const char *delim);
参数说明:
str
:待分割的字符串。在首次调用?strtok
?时,需要传入待分割的字符串;在连续调用时,传入?NULL
。delim
:分隔符字符串,包含一组用作分隔符的字符。
返回值:
- 当成功找到子串时,返回指向该子串的指针。
- 当没有更多子串可供返回时,返回?
NULL
。
注意事项:
strtok
?函数会修改原始字符串,将其拆分为子串。因此,在使用?strtok
?之前,请确保原始字符串是可修改的。strtok
?函数是非重入(non-reentrant)的,因为它使用静态缓冲区来存储上一次调用的状态。这意味着在多线程环境中使用?strtok
?可能会导致问题。在这种情况下,可以考虑使用线程安全的替代函数,如?strtok_r
。
下面是一个简单的示例,展示如何使用?strtok
?函数:
#include <stdio.h>
#include <string.h>
int main() {
char input[] = "This,is,a,test.";
const char *delimiter = ",";
char *token;
/* 获取第一个子串 */
token = strtok(input, delimiter);
while (token != NULL) {
printf("%s\n", token);
/* 获取下一个子串 */
token = strtok(NULL, delimiter);
}
return 0;
}
在这个示例中,我们使用逗号作为分隔符来分割字符串?"This,is,a,test."
。程序会输出:
This
is
a
test.
12,atoi 函数,将字符串转整数。
函数原型:
int atoi(const char *str);
参数:
str
:要转换的字符串。
返回值:
- 如果字符串表示的数字在?
int
?类型的范围内,则返回对应的整数值。 - 如果字符串表示的数字超出了?
int
?类型的范围,则返回?INT_MAX
?或?INT_MIN
(取决于超出的方向)。 - 如果字符串不包含数字字符,则返回 0。
- 如果字符串为空指针,则行为是未定义的。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "123";
int num = atoi(str);
printf("Number: %d\n", num); // 输出: Number: 123
return 0;
}
????????请注意,atoi
?函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用?strtol
?或?sscanf
?等函数。
13,atof 函数,将字符串转float类型的数据。
函数原型:
double atof(const char *str);
参数:
str
:要转换的字符串。
返回值:
- 如果字符串表示的数字在?
double
?类型的范围内,则返回对应的浮点数值。 - 如果字符串表示的数字超出了?
double
?类型的范围,则返回?HUGE_VAL
?或?-HUGE_VAL
(取决于超出的方向)。 - 如果字符串不包含数字字符,则返回 0.0。
- 如果字符串为空指针,则行为是未定义的。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "3.14";
double num = atof(str);
printf("Number: %f\n", num); // 输出: Number: 3.140000
return 0;
}
????????同样地,atof
?函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用?strtod
?或?sscanf
?等函数。
14,atol 函数,将字符串转long类型的数据。
函数原型:
long atol(const char *str);
参数:
str
:要转换的字符串。
返回值:
- 如果字符串表示的数字在?
long int
?类型的范围内,则返回对应的整数值。 - 如果字符串表示的数字超出了?
long int
?类型的范围,则返回?LONG_MAX
?或?LONG_MIN
(取决于超出的方向)。 - 如果字符串不包含数字字符,则返回 0。
- 如果字符串为空指针,则行为是未定义的。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "12345";
long int num = atol(str);
printf("Number: %ld\n", num); // 输出: Number: 12345
return 0;
}
????????同样地,atol
?函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用?strtol
?或?sscanf
?等函数。
15,atoll 函数,将字符串转long long类型的数据。
函数原型:
long long int atoll(const char *str);
参数:
str
:要转换的字符串。
返回值:
- 如果字符串表示的数字在?
long long int
?类型的范围内,则返回对应的整数值。 - 如果字符串表示的数字超出了?
long long int
?类型的范围,则返回?LLONG_MAX
?或?LLONG_MIN
(取决于超出的方向)。 - 如果字符串不包含数字字符,则返回 0。
- 如果字符串为空指针,则行为是未定义的。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "123456789012";
long long int num = atoll(str);
printf("Number: %lld\n", num); // 输出: Number: 123456789012
return 0;
}
????????同样地,atoll
?函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用?strtoll
?或?sscanf
?等函数。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!