我正在嘗試編寫一個程序,讀取標準輸入流查找單詞(連續字母字符),併爲每個單詞將它左旋到第一個元音(例如「朋友」旋轉到「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