首页 > 解决方案 > 从 'char' 到 'char' 的无效转换 [-fpermissive] 16 | A[++顶部] = x; | ^ | | | 字符*

问题描述

我正在尝试将字符串添加到堆栈中。请告诉我程序有什么问题。在这个程序中,我试图将堆栈实现为数据结构。我知道如何将数字添加到堆栈和/或删除它们,但我不知道如何添加字符输入。现在我想做一个项目列表,然后打印整个列表。

//Array implementation of the stack
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 11

char A[MAX_SIZE];
int top = -1;


void Push(char x[])
{
  if (top == MAX_SIZE - 1) {
    printf("Error! Array size: %d exceeded\n", MAX_SIZE);
    return;
  }
  A[++top] = x;
}

void Pop() {
  if (top == -1) {
    printf("Error! No element to pop\n");
    return;
  }
  top--;
}

char Top()
{
  return A[top];
}

void Print()
{
  int i;
  printf("Stack: ");
  for (i = 0; i <= top; i++)
    printf("%s ", A[i]);
  printf("\n");
}
int main()
{
  char name1[10] = "Pablo";
  Push(name1);
  char name2[10] = "Robert";
  Push(name2);
  Print();
}

从 'char' 到 'char' 的无效转换 [-fpermissive] 16 | A[++顶部] = x; | ^ | | | 字符*

标签: cdata-structures

解决方案


您的堆栈A被声明为 的数组char,因此它只能保存一个字符串(或一个字符数组)。在有问题的行中,您尝试将 a 分配char *给单个char.

您应该改为定义A为一个数组char *

char *A[MAX_SIZE];

推荐阅读