C语言字符串函数集锦(一)(C语言常用字符串函数详解(一))

原创
ithorizon 7个月前 (10-20) 阅读数 13 #后端开发

C语言字符串函数集锦(一)

C语言字符串函数集锦(一)

C语言中的字符串处理函数是编程中时常使用到的工具,它们为字符串的创建、操作、搜索和转换等提供了极大的便利。本文将详细介绍一些常用的字符串函数,并给出相应的示例代码。

1. 字符串长度函数 - strlen

strlen 函数用于计算字符串的长度,不包括完成符 '\0'。其原型定义在 <string.h> 头文件中。

#include <stdio.h>

#include <string.h>

int main() {

char str[] = "Hello, World!";

printf("字符串长度: %lu ", strlen(str));

return 0;

}

2. 字符串拷贝函数 - strcpy 和 strncpy

strcpy 函数用于将一个字符串拷贝到另一个字符串中,它会覆盖目标字符串原有的内容,并且不检查目标字符串的大小,也许造成缓冲区溢出。而 strncpy 函数则可以指定拷贝的最大字符数,从而避免溢出。

#include <stdio.h>

#include <string.h>

int main() {

char src[] = "Hello, World!";

char dest[20];

strcpy(dest, src);

printf("拷贝后的字符串: %s ", dest);

char dest2[20];

strncpy(dest2, src, 7);

dest2[7] = '\0'; // 确保字符串正确完成

printf("部分拷贝后的字符串: %s ", dest2);

return 0;

}

3. 字符串连接函数 - strcat 和 strncat

strcat 函数用于将一个字符串连接到另一个字符串的末尾,它会自动覆盖目标字符串的完成符 '\0'。而 strncat 函数则可以指定连接的最大字符数,以防止缓冲区溢出。

#include <stdio.h>

#include <string.h>

int main() {

char str1[30] = "Hello, ";

char str2[] = "World!";

strcat(str1, str2);

printf("连接后的字符串: %s ", str1);

char str3[30] = "Hello, ";

char str4[] = "World!";

strncat(str3, str4, 3);

printf("部分连接后的字符串: %s ", str3);

return 0;

}

4. 字符串比较函数 - strcmp 和 strncmp

strcmp 函数用于比较两个字符串的大小,按照字典顺序进行。如果第一个字符串小于第二个字符串,返回一个小于0的值;如果相等,返回0;如果大于,返回一个大于0的值。而 strncmp 函数可以指定比较的最大字符数。

#include <stdio.h>

#include <string.h>

int main() {

char str1[] = "Hello";

char str2[] = "World";

char str3[] = "Hello";

printf("比较于是: %d ", strcmp(str1, str2)); // 负数

printf("比较于是: %d ", strcmp(str1, str3)); // 0

printf("比较于是: %d ", strcmp(str2, str1)); // 正数

char str4[] = "Hello";

char str5[] = "Helloo";

printf("部分比较于是: %d ", strncmp(str4, str5, 5)); // 0

return 0;

}

5. 字符串查找函数 - strchr 和 strstr

strchr 函数用于在字符串中查找指定的字符,并返回指向该字符的指针。如果未找到,则返回NULL。而 strstr 函数用于查找指定的子字符串,并返回指向子字符串开头的指针。

#include <stdio.h>

#include <string.h>

int main() {

char str[] = "Hello, World!";

char *found = strchr(str, 'W');

if (found != NULL) {

printf("找到字符 'W': %s ", found);

}

char *sub_str = strstr(str, "World");

if (sub_str != NULL) {

printf("找到子字符串 'World': %s ", sub_str);

}

return 0;

}

6. 字符串转换函数 - atof, atoi, atol 和 strtod, strtof, strtold

这些函数用于将字符串成为不同的数值类型。例如,atof 将字符串成为双精度浮点数,atoi 将字符串成为整数等。

#include <stdio.h>

#include <stdlib.h>

int main() {

char str1[] = "123.456";

char str2[] = "123";

char str3[] = "123456789";

double val1 = atof(str1);

int val2 = atoi(str2);

long val3 = atol(str3);

printf("转换于是: %f ", val1);

printf("转换于是: %d ", val2);

printf("转换于是: %ld ", val3);

return 0;

}

7. 字符串替换函数 - str_replace

虽然C标准库中没有直接提供字符串替换函数,但我们可以通过编写自定义函数来实现。以下是一个明了的字符串替换函数的实现。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

char *str_replace(const char *src, const char *find, const char *replace) {

char *result;

int i, count = 0;

int new_len = 0;

int find_len = strlen(find);

// 计算新字符串的长度

for (i = 0; src[i] != '\0'; i++) {

if (strncmp(&src[i], find, find_len) == 0) {

count++;

i += find_len - 1;

}

new_len++;

}

new_len += count * (strlen(replace) - find_len);

// 分配新字符串的内存

result = (char *)malloc(new_len + 1);

if (result == NULL) {

return NULL;

}

// 替换字符串

i = 0;

int j = 0;

while (src[i] != '\0') {

if (strncmp(&src[i], find, find_len) == 0) {

strcpy(&result[j], replace);

j += strlen(replace);

i += find_len;

} else {

result[j++] = src[i++];

}

}

result[j] = '\0';

return result;

}

int main() {

const char *str = "Hello, World! World is beautiful.";

const char *find = "World";

const char *replace = "Universe";

char *replaced_str = str_replace(str, find, replace);

if (replaced_str != NULL) {

printf("替换后的字符串: %s ", replaced_str);

free(replaced_str);

}

return 0;

}

以上是C语言中一些常用的字符串函数及其使用示例。掌握这些函数可以帮助我们更高效地处理字符串,避免在编写程序时犯不正确。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门