• 締切済み

スタックポインタを使って,1文字を格納&取り出しをする関数void p

スタックポインタを使って,1文字を格納&取り出しをする関数void push(char a) と char pop(void)を作成し,これを使って文字列を反転させるプログラムを作成したいのですが結果のようにするにはどのように組めばいいのでしょうか?(文字列は、コマンドライン引数を使う。) (結果) 入力してください:aiueo  変換後:oeuia

みんなの回答

回答No.2

#define STACK_SIZE 256 char stack_buf[STACK_SIZE]; int sp = 0; void push(char a) { if (sp < STACK_SIZE - 1) { stack_buf[sp] = a; sp++; } } char pop(void) { if (sp > 0) { sp--; return(stack_buf[sp]); } else { return(0); } } void main(int argc, char *argv[]) { char *instr; char buf[256]; int i, len; if (argc > 1) { // 文字列は、コマンドライン引数を使う。 char *instr = argv[1]; // 「結果」のように表示する printf("入力してください:%s\n", instr); } else { // コマンドライン引数が無い時 printf("入力してください:"); scanf("%s", buf); instr = inbuf; } len = strlen(instr); for (i = 0; i < len; i++) { push(instr[i]); } for (i = 0; i < len; i++) { buf[i] = pop(); } buf[len] = '\0'; printf("変換後:%s\n", buf); }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「文字列は、コマンドライン引数を使う」と「入力してください:aiueo」の間の整合性がとれてないような気がするんだけど.... さておき, どこがわからないのですか?

関連するQ&A