gpt4 book ai didi

c - 在 C 中围绕元音旋转单词

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:25 26 4
gpt4 key购买 nike

我正在尝试编写一个程序来读取 stdin 流以查找单词(连续的字母字符)并且对于每个单词将其向左旋转到第一个元音(例如“ friend ”旋转到“iendfr”)并将此序列写出代替原来的词。所有其他字符均原封不动地写入标准输出。

到目前为止,我已经设法颠倒了字母,但无法做更多的事情。有什么建议吗?

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_STK_SIZE 256

char stk[MAX_STK_SIZE];
int tos = 0; // next available place to put char

void push(int c) {
if (tos >= MAX_STK_SIZE) return;
stk[tos++] = c;
}

void putStk() {
while (tos >= 0) {
putchar(stk[--tos]);
}
}

int main (int charc, char * argv[]) {
int c;
do {
c = getchar();
if (isalpha(c) && (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'o' || c == 'O' || c == 'u' || c == 'U')) {
push(c);
} else if (isalpha(c)) {
push(c);
} else {
putStk();
putchar(c);
}
} while (c != EOF);
}

-灵魂

最佳答案

我不会为您编写整个程序,但这个示例展示了如何从第一个元音(如果有的话)开始轮换单词。函数 strcspn 返回与传递的集合中任何匹配的第一个字符的索引,如果未找到匹配项,则返回字符串的长度。

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

void vowelword(const char *word)
{
size_t len = strlen(word);
size_t index = strcspn(word, "aeiou");
size_t i;
for(i = 0; i < len; i++) {
printf("%c", word[(index + i) % len]);
}
printf("\n");
}

int main(void)
{
vowelword("friend");
vowelword("vwxyz");
vowelword("aeiou");
return 0;
}

程序输出:

iendfr
vwxyz
aeiou

关于c - 在 C 中围绕元音旋转单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420344/

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