MST

星途 面试题库

面试题:C语言指针与字符串的复杂处理

假设有一个字符串数组,每个字符串都是一个单词,数组最后以NULL指针结束。编写一个C函数,它接收这个字符串数组的指针,对数组中的单词进行排序(按字典序),并返回排序后的数组指针。要求在排序过程中,使用指针操作来交换单词(不能使用额外的大数组来存储排序结果)。例如输入数组为{"banana", "apple", "cherry", NULL},函数应返回{"apple", "banana", "cherry", NULL}。
10.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <string.h>

char** sortStrings(char** arr) {
    int i, j;
    char* temp;
    for (i = 0; arr[i] != NULL; i++) {
        for (j = i + 1; arr[j] != NULL; j++) {
            if (strcmp(arr[i], arr[j]) > 0) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

你可以这样调用这个函数:

int main() {
    char* words[] = {"banana", "apple", "cherry", NULL};
    char** sortedWords = sortStrings(words);
    int i = 0;
    while (sortedWords[i] != NULL) {
        printf("%s ", sortedWords[i]);
        i++;
    }
    return 0;
}