如何使用C将字符串按字母顺序排列

如何使用C将字符串按字母顺序排列,c,C,大家好,我有一个按字母顺序排列句子的代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int cmp(const void *a, const void *b){ return strcmp(*(const char **)a, *(const char **)b); } int main(){ char str[1

大家好,我有一个按字母顺序排列句子的代码:

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

int cmp(const void *a, const void *b){
    return strcmp(*(const char **)a, *(const char **)b);
}

int main(){
    char str[100];
    scanf("%[^'\n']s",str);
    char *word, *words[strlen(str)/2+1];
    int i, n;

    for(i=0;str[i];i++){
        str[i]=tolower(str[i]);
    }

    i=0;
    word = strtok(str, " ,.-:;?!");

    while(word != NULL){
        words[i++] = word;
        word = strtok(NULL, " ,.-:;?!");
    }

    n = i;
    qsort(words, n, sizeof(*words), cmp);

    for(i=0; i<n; ++i){
        printf("%s ",words[i]);
    }
    printf("\n");

    return 0;
}

我想让它给出“My/Beauty/car/is”,但我不知道怎么做(将大写的单词私有化并打印“/”)

而不是
scanf(“%[^'\n']s”,str)
,您几乎肯定需要
scanf(“%99[^\n]”,str)
删除
tolower
,您还必须编写自己的
strcmp
函数以传递到
qsort
您可以根据您的区域设置定义将
strcmp()
替换为。抱歉,我重写了我的问题,现在它有了我想知道的东西,那么您只需要删除
tolower
,并在最终打印循环中添加打印斜杠。
beautiful car is my