#include <stdio.h>
#include <string.h>
void gyaku(char s[]);
int main(void)
{
char str[20];
scanf("%s", str);
gyaku(str);
return 0;
}
fedcbaと出力されるようにしたいのです。
質問は何ですか?ganbaregenki さんが書きました:C言語で下記のプロトタイプ宣言を参考にして関数を作りたいんですけど全く分かりません。
テスト駆動開発では、まずテストケースを書き、それを通るようなコードを書きます。その後リファクタリングしていきます。ganbaregenki さんが書きました: 例えば、abcdefと入力すると
fedcbaと出力されるようにしたいのです。
#include <stdio.h>
#include <string.h>
void gyaku(char s[]);
int main(void)
{
char str[20];
scanf("%19s", str);
gyaku(str);
return 0;
}
void gyaku(char s[])
{
int len = strlen(s), i;
for (i = len - 1; i >= 0; i--) {
putchar(s[i]);
}
putchar('\n');
}
/*
#include <stdio.h>
#include <string.h>
void gyaku(char s[]);
int main(void)
{
char str[20];
scanf("%s", str);
gyaku(str);
return 0;
}
*/
//------------------------------------------------------------------------------
#include <stdio.h>
#define STACK_SIZE 100 // スタックに積むことのできるデータの最大個数
#define SUCCESS 1 // 成功
#define FAILURE 0 // 失敗
typedef int data_t; // スタックに貯えるデータの型:
//[要素の型を変更するときに非常に都合が良いから]
data_t stack_data[STACK_SIZE];// スタック本体
int stack_num; // スッタク内のデータ数 */
int push(data_t push_data) //[push]機械語のpush命令を模したもの
{ //機械語では重要で多用される
if (stack_num < STACK_SIZE) { //Stackとは干草やお皿などが整然と積み重なったもののこと
stack_data[stack_num] = push_data; //stack_data[]<<---にpush_data
stack_num ++; //stack_numをインクリメント
return SUCCESS; //--成功
} else { //
return FAILURE; //--失敗
}
}
int pop(data_t *pop_data) //[pop]機械語のpush命令を模したもの
{ // pushとペアーで用いる
if (stack_num > 0) { //stack_numは0より大
stack_num --; //stack_numをデクリメント
*pop_data = stack_data[stack_num];//*pop_data<<---stack_data[]
return SUCCESS; //--成功
} else { //
return FAILURE; //--失敗
}
}
void stackPrint() //スッタク内のデータを表示する関数
{
int i;
printf("stack [");
for (i = 0; i < stack_num; i++) {
printf("%3d", stack_data[i]);
}
printf("]\n");
}
int main(void)
{
int i, p;
stack_num = 0; //スタックのデータ数を 0 に初期化
for (i = 1; i<=5 ; i++) {
push(i); // 1 から 5 までの数値を push
printf("push %2d :", i);
stackPrint();
}
for (i = 1; i <= 3; i++) {
pop(&p); // 3 回だけ pop
printf("pop %2d :", p);
stackPrint();
}
for (i = 6; i <= 9; i++) {
push(i); // 6 から 9 までの数値を push
printf("push %2d :", i);
stackPrint();
}
while (stack_num > 0) {
pop(&p); // スタックに残っているデータを全て pop
printf("pop %2d :", p);
stackPrint();
}
}
D:\h\z10\01\20\02>cl /EHsc c1.cpp
Microsoft(R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
c1.cpp
Microsoft (R) Incremental Linker Version 14.00.24215.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:c1.exe
c1.obj
D:\h\z10\01\20\02>rem -------------------------------- c1.exe
D:\h\z10\01\20\02>c1.exe
push 1 :stack [ 1]
push 2 :stack [ 1 2]
push 3 :stack [ 1 2 3]
push 4 :stack [ 1 2 3 4]
push 5 :stack [ 1 2 3 4 5]
pop 5 :stack [ 1 2 3 4]
pop 4 :stack [ 1 2 3]
pop 3 :stack [ 1 2]
push 6 :stack [ 1 2 6]
push 7 :stack [ 1 2 6 7]
push 8 :stack [ 1 2 6 7 8]
push 9 :stack [ 1 2 6 7 8 9]
pop 9 :stack [ 1 2 6 7 8]
pop 8 :stack [ 1 2 6 7]
pop 7 :stack [ 1 2 6]
pop 6 :stack [ 1 2]
pop 2 :stack [ 1]
pop 1 :stack []
D:\h\z10\01\20\02>c