按字符串长度顺序进行排序

目录

代码实现

知识解析


代码实现


下面是一个简单的C语言程序,接受用户输入三个字符串,然后按照字典顺序由长度小到大输出:
 

#include <stdio.h>
#include <string.h>

int main() {
    char str1[50], str2[50], str3[50];

    // 输入三个字符串
    printf("请输入第一个字符串:");
    scanf("%s", str1);

    printf("请输入第二个字符串:");
    scanf("%s", str2);

    printf("请输入第三个字符串:");
    scanf("%s", str3);

    // 使用strcmp函数比较字符串,并进行排序
    if (strlen(str1)>strlen(str2)  ) {
        char temp[50];
        strcpy(temp, str1);
        strcpy(str1, str2);
        strcpy(str2, temp);
    }

    if (strlen(str2)>strlen(str3)) {
        char temp[50];
        strcpy(temp, str2);
        strcpy(str2, str3);
        strcpy(str3, temp);
    }

    if (strlen(str1)>strlen(str2)) {
        char temp[50];
        strcpy(temp, str1);
        strcpy(str1, str2);
        strcpy(str2, temp);
    }

    // 输出排序后的字符串
    printf("\n按字典顺序由小到大排序:\n");
    printf("%s\n%s\n%s\n", str1, str2, str3);

    return 0;
}

知识解析


这个程序使用了 `strlen` 函数来比较字符串,并且使用 `strcpy` 函数来进行字符串的交换。最终,按照长短顺序由小到大输出了三个字符串。请注意,这里假设输入的字符串长度不超过50个字符,如果需要处理更长的字符串,可以相应地增加数组的大小。

`strcpy` 是 C 语言标准库 `<string.h>` 中的一个字符串复制函数,其作用是将一个字符串复制到另一个字符串中,包括字符串的结束符 `\0`。

函数原型如下:

char *strcpy(char *dest, const char *src);

其中,`dest` 是目标字符串(目标缓冲区),`src` 是源字符串。

函数的作用是将 `src` 指向的字符串(包括结束符 `\0`)复制到 `dest` 指向的字符串中。返回的是目标字符串 `dest` 的起始地址。
 

#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "Hello, World!";
    char destination[20];

    // 使用 strcpy 将 source 复制到 destination
    strcpy(destination, source);

    // 输出结果
    printf("源字符串: %s\n", source);
    printf("目标字符串: %s\n", destination);

    return 0;
}

在这个例子中,`source` 是一个包含字符串 "Hello, World!" 的字符数组,`destination` 是一个空的字符数组。`strcpy` 函数将 `source` 复制到 `destination` 中,最终 `destination` 的内容就是 "Hello, World!"。

需要注意的是,`strcpy` 函数不会检查目标缓冲区的大小,因此如果目标缓冲区不够大,可能会导致缓冲区溢出,产生不可预知的错误。在实际使用中,建议使用 `strcpy_s` 或者 `strncpy` 等安全的字符串复制函数,以避免潜在的缓冲区溢出问题。

if (strcmp(str1, str2) > 0) 中:

  • 如果 strcmp(str1, str2) 的结果大于 0,说明 str1 字典序大于 str2
  • 如果 strcmp(str1, str2) 的结果等于 0,说明 str1str2 相等。
  • 如果 strcmp(str1, str2) 的结果小于 0,说明 str1 字典序小于 str2

如果您想比较字符串的长度,可以使用 strlen 函数,例如:

if (strlen(str1) > strlen(str2))

这将比较 str1str2 的长度,而不考虑字符串的内容。

猜你喜欢

转载自blog.csdn.net/qq_50942093/article/details/135006604
今日推荐