C语言中的字符串操作「大小写转换、比较、排序等」

1. 字符串大小写转换

在C语言中,字符串是一个字符数组,因此对字符串的操作实际上就是对字符数组的操作。字符串的大小写转换可以通过循环遍历字符数组来实现。

1.1 将字符串转换成大写

将字符串转换成大写可以使用C库函数toupper(),该函数将小写字母转换成大写字母,其他字符不变。

#include <stdio.h>

#include <ctype.h>

int main() {

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

int i = 0;

while (str[i]) {

putchar(toupper(str[i]));

i++;

}

return 0;

}

上述代码输出结果如下:

HELLO, WORLD!

1.2 将字符串转换成小写

将字符串转换成小写可以使用C库函数tolower(),该函数将大写字母转换成小写字母,其他字符不变。

#include <stdio.h>

#include <ctype.h>

int main() {

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

int i = 0;

while (str[i]) {

putchar(tolower(str[i]));

i++;

}

return 0;

}

上述代码输出结果如下:

hello, world!

2. 字符串比较

在C语言中,使用strcmp()函数来比较两个字符串的大小关系。该函数的返回值依赖于比较操作结果是否相等,相等则返回0,大于则返回正整数,小于则返回负整数。

#include <stdio.h>

#include <string.h>

int main() {

char str1[] = "hello world";

char str2[] = "HELLO WORLD";

int result = strcmp(str1, str2);

if(result == 0) {

printf("str1 is equal to str2");

} else if(result < 0) {

printf("str1 is less than str2");

} else {

printf("str1 is greater than str2");

}

return 0;

}

上述代码输出结果如下:

str1 is less than str2

需要注意的是,字符串的比较是按照字典顺序进行的,因此字符的ASCII码大小关系对比决定了字符串的大小关系。字符串大小写的感知和比较可以通过均转成大写或小写实现。

3. 字符串排序

在C语言中,使用qsort()函数可以方便快捷地对字符串进行排序。需要注意的是排序的基准函数需要自己实现,该函数作为qsort()的参数传入。下面是一个示例程序。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// qsort需要的比较函数

int compare (const void * a, const void * b) {

return (strcmp(*(const char **)a, *(const char **)b));

// 如果想要区分大小写可以使用以下代码

// return (strcasecmp(*(const char **)a, *(const char **)b));

}

int main () {

char *names[] = {"John", "Raymond", "Joe", "Andres", "Carl"};

int i = 0;

// 按字典顺序排序

qsort(names, 5, sizeof(char *), compare);

for(i = 0; i < 5; i++) {

printf("%s\n", names[i]);

}

return 0;

}

上述代码输出结果如下:

Andres

Carl

Joe

John

Raymond

在上述示例中,需要我们实现一个比较函数compare(),该函数的作用是比较两个字符串的大小关系。

4. 字符串拼接

在C语言中,使用strcat()函数可以将一个字符串连接在另一个字符串的后面,其用法如下:

#include <stdio.h>

#include <string.h>

int main () {

char str1[30] = "Hello ";

char str2[30] = "World!";

strcat(str1, str2);

printf("%s", str1);

return 0;

}

上述代码输出结果如下:

Hello World!

需要注意的是,如果要将一个字符串复制到另一个字符串数组中,需要使用strcpy()函数。其用法与strcat()函数相似,不过将替换字符换的目标改为目标字符串数组。

5. 总结

字符串操作是C语言中比较基础的操作之一,本文介绍了C语言中的字符串大小写转换、比较、排序、拼接等操作方法。希望能帮助大家更好地掌握字符串操作。

后端开发标签