のために働いていない、誰もがいただきました問題を伝えることができます!スタックを使用して文字列を逆にするので、私は、スタックを使用して文字列を逆にするコードを足すましたが、出力は常に</p> <p>違って見える私
私はハローのような文字列を書くときに出力が「olleh」である必要がありますが、その「OLLO」 ことが
コードが起こって、なぜ任意のアイデアがある:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 101
void push(char);
void pop();
char Top();
void print();
char A[MAX_SIZE];
int top=-1;
void rev(int n)
{
int i;
for(i=0; i<n; i++){
push(A[i]);
}
for(i=0; i<n; i++){
A[i]=Top();
pop();
}
}
void main()
{
printf("enter a string: ");
gets(A);
rev(strlen(A));
printf("output= %s",A);
}
void push(char a)
{
if (top == MAX_SIZE -1){
printf("Error: stack overflow\n");
return;
}
A[++top] = a;
}
void pop()
{
if(top==-1){
printf("Error: stack is empty\n");
return;
}
top--;
}
char Top()
{
return A[top];
}
void print()
{
int i;
printf("Stack: ");
for(i=0;i<=top;i++){
printf("%d ",A[i]);
}
printf("\n");
}
これが出力されます
を使用する必要がある場合、私は[あなたをお勧めしますあなたのプログラムをデバッグする方法を学んでください](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –
また、決して*決して*使用することはありません。危険な機能なので、C標準から削除されました。例えば['fgets'](http://en.cppreference.com/w/c/io/fgets)を参照してください。 –
最後にあなたの問題について:文字列*と*のスタックに 'A' *両方*を使用します。それはうまく動作しません。 –