dポイントプレゼントキャンペーン実施中!

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

(結果)

入力してください:aiueo 
変換後:oeuia

A 回答 (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);
}
    • good
    • 0

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


さておき, どこがわからないのですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A