我正在尝试编写一个程序,读取标准输入流查找单词(连续字母字符),并为每个单词将它左旋到第一个元音(例如“朋友”旋转到“iendfr” )并将该序列写出来代替原始单词。所有其他字符都将写入stdout中。在C元素周围旋转字母
到目前为止,我已经设法扭转了字母,但一直无法做更多。有什么建议么?
#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);
}
-Soul
''else else {putStk();}之前没有'c == EOF'的测试。 putchar(c);'需要审查。 – chux
前两个if子句都做'push()' - 所以任何字符都被推,不是元音 - 是计划吗? – John3136
您可以使用缓冲区而不是堆栈 – BLUEPIXY