gpt4 book ai didi

c - 如何使用 C 获取字符串并按字母顺序排列单词

转载 作者:行者123 更新时间:2023-11-30 21:03:08 25 4
gpt4 key购买 nike

我被困住了。我有一个相当大的编程作业,其中大部分看起来很简单,我所坚持的部分是将一串文本拆分为数组中的各个单词,然后按字母顺序对它们进行排序。

例如如果字符串包含以下内容:“我被卡住了。请帮我进行堆栈交换”,它将把单词保存在数组中并按以下顺序输出:

am
exchange
help
i
me
please
stack
stuck

请大家帮忙吗?

编辑:这是我到目前为止所拥有的:

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

int main()
{
char str[] = "This is a test String, anything else? lol";
char *hhh;

int i;
for(i=0;str[i];i++){
str[i]=tolower(str[i]); //Converts the string to lower case
}

//Breaks the string into separate words based on spaces and some
//punctuation (Anything which signals the end of a word)
hhh = strtok(str," ,.-:;?!");

while(hhh != NULL){
printf("%s \n",hhh);
hhh = strtok(NULL, " ,.-:;?!");
}

}

如您所见,我已将单词转换为小写 r 并且可以输出它们,但我不知道如何按字母顺序对它们进行排序。研究了冒泡排序,我理解它,但我不明白如何使用它来完成我需要的事情。

最佳答案

#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[] = "This is a test String, anything else? lol";
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)
puts(words[i]);

return 0;
}

关于c - 如何使用 C 获取字符串并按字母顺序排列单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com