如何使用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